/
output_message.go
43 lines (35 loc) 路 1019 Bytes
/
output_message.go
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
package connections
type OutputMessageType uint8
const (
OutputMessageTypeGame OutputMessageType = iota
OutputMessageTypePlayer
OutputMessageTypeBroadcast
)
var outputMessageTypeLabels = map[OutputMessageType]string{
OutputMessageTypeGame: "game",
OutputMessageTypePlayer: "player",
OutputMessageTypeBroadcast: "broadcast",
}
func (t OutputMessageType) String() string {
if label, ok := outputMessageTypeLabels[t]; ok {
return label
}
return "unknown"
}
var outputMessageTypeJSONs = map[OutputMessageType][]byte{
OutputMessageTypeGame: []byte(`"game"`),
OutputMessageTypePlayer: []byte(`"player"`),
OutputMessageTypeBroadcast: []byte(`"broadcast"`),
}
func (t OutputMessageType) MarshalJSON() ([]byte, error) {
if json, ok := outputMessageTypeJSONs[t]; ok {
return json, nil
}
return []byte(`"unknown"`), nil
}
//go:generate ffjson $GOFILE
// ffjson: nodecoder
type OutputMessage struct {
Type OutputMessageType `json:"type"`
Payload interface{} `json:"payload"`
}