From c8c19f8657e4ece826b9544761ab6800b8dd685b Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Tue, 11 Sep 2018 11:17:49 +0200 Subject: [PATCH] Diagram --- README.md | 1 + doc/dagfs.png | Bin 0 -> 25101 bytes doc/dagfs.tikz | 101 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 README.md create mode 100644 doc/dagfs.png create mode 100644 doc/dagfs.tikz diff --git a/README.md b/README.md new file mode 100644 index 0000000..1b7d22a --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +![Diagram](doc/dagfs.png?raw=true) diff --git a/doc/dagfs.png b/doc/dagfs.png new file mode 100644 index 0000000000000000000000000000000000000000..f478850fc198ee78ccf90d3b1c582d28b5d67fc3 GIT binary patch literal 25101 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 Ui3x=ia2%wjqzNm3`ufBF077&gNdN!< literal 0 HcmV?d00001 diff --git a/doc/dagfs.tikz b/doc/dagfs.tikz new file mode 100644 index 0000000..a547c30 --- /dev/null +++ b/doc/dagfs.tikz @@ -0,0 +1,101 @@ +\begin{tikzpicture} + + \definecolor{dagfscolor} {rgb}{.7,0.6,1} + \definecolor{rumpcolor} {rgb}{1,0.6,0.6} + + \tikzstyle{treenode} = [component, path fading=flow fade, + minimum width=10ex, minimum height=7ex, align=center, + rounded corners=1] + \tikzstyle{dagfsnode} = [treenode, bottom color=dagfscolor] + + + \tikzstyle{subsystem} = [minimum width=10ex, minimum height=3ex, align=center, + draw=black!80, fill=white, fill opacity=0.6] + + \tikzstyle{treesessionarrow} = [arrow, thick, densely dashed] + + \tikzstyle{treesessionarrow} = [arrow, thick, densely dashed] + + % + % Components + % + + % Dagfs components + \node[dagfsnode, + minimum width=20ex, + minimum height=11ex] + (dagfs_server) {}; + + \path (dagfs_server.west) node[right=1ex] {Dagfs}; + + \path (dagfs_server.east) node[ + left=2ex, yshift=2ex, subsystem, align=center] (frontends) + {Frontends}; + + \path (dagfs_server.east) node[ + left=2ex, yshift=-2ex, subsystem, align=center] (backends) + {Backends}; + + + \node[dagfsnode, below=8ex of dagfs_server] + (dagfs_fs_store) {Dagfs FS store}; + + \node[treenode, + right=8ex of dagfs_fs_store, + minimum height=12ex, bottom color=rumpcolor, rounded corners=1] + (rump) {Rump\\Ext2}; + + \node[dagfsnode, above=8ex of dagfs_server, xshift=-16ex] (dagfs_tcp_server) {Dagfs TCP server}; + \node[dagfsnode, above=8ex of dagfs_server, xshift=12ex] (dagfs_fs) {Dagfs FS}; + \node[dagfsnode, right=2ex of dagfs_fs] (dagfs_rom) {Dagfs ROM}; + + % + % Linux VM + % + \node[treenode, minimum width=24ex, minimum height=22ex, above=8ex of dagfs_tcp_server] (linux) {}; + \path (linux.north) node[below=1ex] {Linux VM}; + + + % + % Sessions + % + \draw[treesessionarrow] (dagfs_fs_store.90) + .. controls +(270:-4ex) and +(270:4ex) .. + node[right, sloped=false] {} + (backends.270); + + \draw[treesessionarrow] (dagfs_tcp_server.270) + .. controls +(270:4ex) and +(270:-7ex) .. + node[right, sloped=false] {} + (frontends.135); + + \draw[treesessionarrow] (dagfs_fs.270) + .. controls +(270:4ex) and +(270:-8ex) .. + node[right, sloped=false] {} + (frontends.90); + + \draw[treesessionarrow] (dagfs_rom.270) + .. controls +(270:4ex) and +(270:-7ex) .. + node[right, sloped=false] {} + (frontends.45); + + \draw[treesessionarrow] (dagfs_fs_store) -- + node[below, align=center, sloped=false] {File\\system} (rump); + + % + % TCP + % + + \node[draw, + dropshadow, path fading=flow fade, shape=double arrow, + below=5ex of linux, + yshift=1ex, + draw opacity=0.5, + rotate=90, + double arrow head extend=1ex, + inner xsep=2ex, inner ysep=1ex] + (arrow) {}; + + \path (arrow.east) node[yshift=-3ex, right=2ex] {TCP/IP}; + +\end{tikzpicture}