@cryptotaxi247 / kubo / commits / 779af0e73

add file i had forgotten to

Jeromy committed Oct 14, 2014 at 10:37 UTC 779af0e731a8d9077759a2545ec2648c8923e1f3
1 file changed +56
diagnostics/vis.go new
+56
@@ -0,0 +1,56 @@
1 +package diagnostics
2 +
3 +import "encoding/json"
4 +
5 +type node struct {
6 + Name string `json:"name"`
7 + Value uint64 `json:"value"`
8 +}
9 +
10 +type link struct {
11 + Source int `json:"source"`
12 + Target int `json:"target"`
13 + Value int `json:"value"`
14 +}
15 +
16 +func GetGraphJson(dinfo []*DiagInfo) []byte {
17 + out := make(map[string]interface{})
18 + names := make(map[string]int)
19 + var nodes []*node
20 + for _, di := range dinfo {
21 + names[di.ID] = len(nodes)
22 + val := di.BwIn + di.BwOut
23 + nodes = append(nodes, &node{Name: di.ID, Value: val})
24 + }
25 +
26 + var links []*link
27 + linkexists := make([][]bool, len(nodes))
28 + for i, _ := range linkexists {
29 + linkexists[i] = make([]bool, len(nodes))
30 + }
31 +
32 + for _, di := range dinfo {
33 + myid := names[di.ID]
34 + for _, con := range di.Connections {
35 + thisid := names[con.ID]
36 + if !linkexists[thisid][myid] {
37 + links = append(links, &link{
38 + Source: myid,
39 + Target: thisid,
40 + Value: 3,
41 + })
42 + linkexists[myid][thisid] = true
43 + }
44 + }
45 + }
46 +
47 + out["nodes"] = nodes
48 + out["links"] = links
49 +
50 + b, err := json.Marshal(out)
51 + if err != nil {
52 + panic(err)
53 + }
54 +
55 + return b
56 +}