package p2plib import ( "encoding/json" "log" "time" ) type Msg struct { Type string `json:"type"` Date time.Time `json:"date"` Content string `json:"content"` PeersList PeersList `json:"peerslist"` Data []byte `json:"data"` } type Case struct { Case string Function func(Peer, Msg) } var msgCases map[string]func(Peer, Msg) func MessageHandler(peer Peer, msg Msg) { log.Println("[New msg]") log.Println(msg) /*for c, caseFunction := range msgCases { if msg.Type == c { caseFunction(peer, msg) } }*/ msgCases[msg.Type](peer, msg) } func (msg *Msg) Construct(msgtype string, msgcontent string) { msg.Type = msgtype msg.Content = msgcontent msg.Date = time.Now() } func (msg Msg) ToBytes() []byte { msgS, err := json.Marshal(msg) check(err) l := string(msgS) + "\n" r := []byte(l) return r } func (msg Msg) CreateFromBytes(bytes []byte) Msg { err := json.Unmarshal(bytes, &msg) check(err) return msg }