summaryrefslogtreecommitdiff
path: root/doc/structure.dot
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2012-05-18 05:35:23 +0000
committerChristian Grothoff <christian@grothoff.org>2012-05-18 05:35:23 +0000
commit9d625502f23c407c987172f5a073bc1ce4d53f07 (patch)
treee669f1c8affb4c2b67978ba0738167baea7783b2 /doc/structure.dot
parent748edaf224981bb91663e22620b7e3100b093bec (diff)
-code structure
Diffstat (limited to 'doc/structure.dot')
-rw-r--r--doc/structure.dot104
1 files changed, 104 insertions, 0 deletions
diff --git a/doc/structure.dot b/doc/structure.dot
new file mode 100644
index 000000000..d3b2c0cc9
--- /dev/null
+++ b/doc/structure.dot
@@ -0,0 +1,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;
+ 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;
+ }
+
+}