blockchainIDsystem/peer/messages.go
peer/messages.goRaw
1package main
2
3import (
4 "encoding/json"
5 "fmt"
6 "log"
7 "net"
8 "time"
9
10 "github.com/fatih/color"
11)
12
13type Msg struct {
14 Type string `json:"type"`
15 Date time.Time `json:"date"`
16 Content string `json:"content"`
17 PeersList PeersList `json:"peerslist"`
18}
19
20func messageHandler(conn net.Conn, msg Msg) {
21
22 log.Println("[New msg]")
23 log.Println(msg)
24
25 switch msg.Type {
26 case "Hi":
27 color.Yellow(msg.Type)
28 color.Green(msg.Content)
29 break
30 case "PeersList":
31 color.Blue("newPeerslist")
32 fmt.Println(msg.PeersList)
33
34 time.Sleep(1000 * time.Millisecond)
35 updatePeersList(conn, msg.PeersList)
36 propagatePeersList()
37 printPeersList()
38 default:
39 log.Println("Msg.Type not supported")
40 break
41 }
42
43}
44func (msg Msg) construct(msgtype string, msgcontent string, peersList PeersList) Msg {
45 msg.Type = msgtype
46 msg.Content = msgcontent
47 msg.PeersList = peersList
48 msg.Date = time.Now()
49 return msg
50}
51func (msg Msg) toBytes() []byte {
52 msgS, err := json.Marshal(msg)
53 check(err)
54 l := string(msgS) + "\n"
55 r := []byte(l)
56 return r
57}
58func (msg Msg) createFromBytes(bytes []byte) Msg {
59 err := json.Unmarshal(bytes, &msg)
60 check(err)
61 return msg
62}