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
|
|
}
|