-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathcommunication.go
128 lines (102 loc) · 2.42 KB
/
communication.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package gographer
import (
"encoding/json"
"log"
)
type InitGraphMessage struct {
Command string `json:"command,string"`
Graph string `json:"graph,string"`
}
type AddNodeMessage struct {
Command string `json:"command,string"`
Id int `json:"id,int"`
Name string `json:"name,string"`
Group string `json:"group,string"`
Size int `json:"size,int"`
}
type AddEdgeMessage struct {
Command string `json:"command,string"`
Source int `json:"source,int"`
Target int `json:"target,int"`
Id int `json:"id,int"`
Weight int `json:"weight,int"`
}
type RemoveNodeMessage struct {
Command string `json:"command,string"`
Id int `json:"id,int"`
}
type RemoveEdgeMessage struct {
Command string `json:"command,string"`
Source int `json:"source,int"`
Target int `json:"target,int"`
Id int `json:"id,int"`
}
type SetNodeNameMessage struct {
Command string `json:"command,string"`
Id int `json:"id,int"`
Name string `json:"name,string"`
}
func (g *Graph) BroadcastAddNode(n Node) {
msg := AddNodeMessage{
Command: "AddNode",
Id: n.Id,
Name: n.Name,
Group: n.Group,
Size: n.Size,
}
encoded, err := json.Marshal(msg)
if err != nil {
log.Panic("Marshaling went oh so bad: ", err)
}
g.wc.SendBytes(encoded)
}
func (g *Graph) BroadcastAddEdge(e Edge) {
msg := AddEdgeMessage{
Command: "AddEdge",
Source: e.Source,
Target: e.Target,
Id: e.Id,
Weight: e.Weight,
}
encoded, err := json.Marshal(msg)
if err != nil {
log.Panic("Marshaling went bad: ", err)
}
g.wc.SendBytes(encoded)
}
func (g *Graph) BroadcastRemoveNode(n Node) {
msg := RemoveNodeMessage{
Command: "RemoveNode",
Id: n.Id,
}
encoded, err := json.Marshal(msg)
if err != nil {
log.Panic("Marshaling of BroadcastRemoveNode failed, err: ", err)
}
g.wc.SendBytes(encoded)
}
func (g *Graph) BroadcastRemoveEdge(e Edge) {
msg := RemoveEdgeMessage{
Command: "RemoveEdge",
Source: e.Source,
Target: e.Target,
Id: e.Id,
}
encoded, err := json.Marshal(msg)
if err != nil {
log.Panic("Marshaling of BoradcastRemoveEdge failed, err: ", err)
}
g.wc.SendBytes(encoded)
}
func (g *Graph) BroadcastRenameNode(n Node) {
msg := SetNodeNameMessage{
Command: "SetNodeName",
Id: n.Id,
Name: n.Name,
}
encoded, err := json.Marshal(msg)
if err != nil {
log.Panic("Marshaling went oh so bad: ", err)
}
g.wc.SendBytes(encoded)
}