bc/peer/p2plib/messages.go
peer/p2plib/messages.goRaw
1package p2plib
2
3import (
4 "encoding/json"
5 "log"
6 "time"
7)
8
9type Msg struct {
10 Type string `json:"type"`
11 Date time.Time `json:"date"`
12 Content string `json:"content"`
13 PeersList PeersList `json:"peerslist"`
14 Data []byte `json:"data"`
15}
16
17type Case struct {
18 Case string
19 Function func(Peer, Msg)
20}
21
22var msgCases map[string]func(Peer, Msg)
23
24func MessageHandler(peer Peer, msg Msg) {
25
26 log.Println("[New msg]")
27 log.Println(msg)
28
29 /*for c, caseFunction := range msgCases {
30 if msg.Type == c {
31 caseFunction(peer, msg)
32 }
33 }*/
34 msgCases[msg.Type](peer, msg)
35
36}
37func (msg *Msg) Construct(msgtype string, msgcontent string) {
38 msg.Type = msgtype
39 msg.Content = msgcontent
40 msg.Date = time.Now()
41}
42func (msg Msg) ToBytes() []byte {
43 msgS, err := json.Marshal(msg)
44 check(err)
45 l := string(msgS) + "\n"
46 r := []byte(l)
47 return r
48}
49func (msg Msg) CreateFromBytes(bytes []byte) Msg {
50 err := json.Unmarshal(bytes, &msg)
51 check(err)
52 return msg
53}