arnaucube
arnaucube/bcPublic Self-hosted repository
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}