aboutsummaryrefslogtreecommitdiff
path: root/doc/structure.dot
blob: f7f0ac451c114d3c1dea234e67046357be11594d (plain) (blame)
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
// house = application
// circle (default) = service
// box = daemon
// diamond = library
// black line = dependency
// blue line = extension via plugin
// dashed = in planning

digraph dependencies {
splines = true;

  fs [shape=house];
  fs -> dht;
  fs -> core;
  fs -> datastore;
  fs -> stream [style=dashed];
  fs -> ats [style=dashed];
  fs -> block [stlye=dotted,color=blue];
  exit -> mesh;
  exit -> tun;
  vpn -> mesh;
  vpn -> tun;
  pt [shape=house];
  pt -> mesh;
  pt -> vpn;
  pt -> dns;
  dns -> mesh;
  dns -> tun;
  gns [shape=house];
  gns -> namestore;
  gns -> dns;
  gns -> dht;
  gns -> stream [style=dashed];
  gns -> block [style=dotted,color=blue];
//  psycd [style=dashed,shape=house];
//  psycd -> mesh [style=dashed];
  stream [shape=diamond];
  stream -> mesh;
  stream -> lockmanager [style=dashed];
  dht -> core;
  dht -> nse;
  dht -> block;
  dht -> datacache;
  dht -> ats [style=dashed];
  nse -> core;
  block [shape=diamond];
  datacache [shape=diamond];
  mesh -> core [weight=2];
  mesh -> dht;
  mesh -> regex;
  mesh -> block [stlye=dashed,color=blue];
  mesh -> ats [style=dashed];
  regex [shape=diamond];
  core -> transport;
  core -> peerinfo;
  topology [shape=box];
  topology -> transport;
  topology -> core;
  topology -> hello;
  hostlist [shape=box];
  hostlist -> core;
  hostlist -> peerinfo;
  hostlist -> hello;
  transport -> ats;
  transport -> hello;	  
  transport -> peerinfo;
  transport -> nat;
  transport -> fragmentation;
  dv [style=dashed,shape=egg,layer=core];
  dv -> transport [style=dashed,color=blue];
  dv -> core [style=dashed];
  core -> dv [style=invis]; // force dv below core
  peerinfo -> hello;
  fragmentation [shape=diamond];
  hello [shape=diamond];
  nat [shape=diamond];
  tun [shape=diamond];

  subgraph STREAM {
    stream; lockmanager;
  }
  subgraph DHT {
    dht; nse; datacache; block;
  }
  subgraph MESH {
    mesh; regex;
  }
  subgraph TRANSPORT {
    transport; dv; peerinfo; hello; nat; ats;
  }
  subgraph CORE {
    core; hostlist; topology;
  }
  subgraph FS {
    fs; datastore;
  }
  subgraph GNS {
    gns; namestore;
  }
  subgraph VPN {
    vpn; pt; exit;
  }

}