forked from funny/link
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmessage.go
More file actions
60 lines (50 loc) · 1.15 KB
/
Copy pathmessage.go
File metadata and controls
60 lines (50 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package link
import (
"encoding/gob"
"encoding/json"
"encoding/xml"
)
type Message interface {
OutBufferSize() int
WriteOutBuffer(*OutBuffer) error
}
// A func implement the Message interface.
type MessageFunc func(*OutBuffer) error
func (e MessageFunc) OutBufferSize() int {
return 1024
}
func (e MessageFunc) WriteOutBuffer(out *OutBuffer) error {
return e(out)
}
// Convert to bytes message.
func Bytes(v []byte) Message {
return MessageFunc(func(buffer *OutBuffer) error {
buffer.WriteBytes(v)
return nil
})
}
// Convert to string message.
func String(v string) Message {
return MessageFunc(func(buffer *OutBuffer) error {
buffer.WriteString(v)
return nil
})
}
// Create a json message.
func Json(v interface{}) Message {
return MessageFunc(func(buffer *OutBuffer) error {
return json.NewEncoder(buffer).Encode(v)
})
}
// Create a gob message.
func Gob(v interface{}) Message {
return MessageFunc(func(buffer *OutBuffer) error {
return gob.NewEncoder(buffer).Encode(v)
})
}
// Create a xml message.
func Xml(v interface{}) Message {
return MessageFunc(func(buffer *OutBuffer) error {
return xml.NewEncoder(buffer).Encode(v)
})
}