X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=top%2Fmtask_integration.tex;h=a0d462468afa2d32b2ec6f9186e08cdbe39934ae;hb=5702796e5885e85b9e8dcc0d5160dccb9386b05f;hp=f0f32d8a2c702b62f9cf8d67593646e7f9940a35;hpb=3fe94feeee0efd1922263aca9d578031e2283f61;p=phd-thesis.git diff --git a/top/mtask_integration.tex b/top/mtask_integration.tex index f0f32d8..a0d4624 100644 --- a/top/mtask_integration.tex +++ b/top/mtask_integration.tex @@ -1,15 +1,75 @@ \documentclass[tikz]{standalone} -\usetikzlibrary{positioning} +\usetikzlibrary{positioning,shapes.geometric,shapes.symbols,shadows,fit} \begin{document} -\begin{tikzpicture}[nodes={draw,minimum width=7.5em}] - \node (dsl) {domain-specific language}; - \node (sta) [below=of dsl,xshift=-3.75em] {standalone}; - \node (emb) [right=of sta] {embedded}; - \node (het) [below=of emb,xshift=-3.75em] {heterogeneous}; - \node (hom) [right=of het] {homogeneous}; - \draw [->] (dsl) -- (sta); - \draw [->] (dsl) -- (emb); - \draw [->] (emb) -- (het); - \draw [->] (emb) -- (hom); +\begin{tikzpicture}[% + node distance=1em, + task/.style={regular polygon,regular polygon sides=3,text width=2.5em,draw}, + share/.style={cylinder,shape border rotate=90,aspect=.3,text width=2.5em,text height=1em,draw}, + client/.style={cloud,aspect=2} + ] + \node (C1) [client,inner sep=0pt,draw] {Client\textsubscript{1}}; + \node (C2) [client,inner sep=0pt,draw,right=of C1] {Client\textsubscript{2}}; + \node (CD) [right=of C2] {\ldots}; + \node (CN) [client,inner sep=0pt,draw,right=of CD] {Client\textsubscript{n}}; + + % line between server and browser + \draw [dotted] ([xshift=-5em,yshift=-.8em]C1.south west) node[left,above]{browser} node[left,below]{server} -- ([xshift=5em,yshift=-.8em]CN.south east); + + \node[task,inner sep=-4.5pt,below=of C1,fill=white,xshift=6.5em,yshift=-4.5em] (Tn) {Task\textsubscript{n}}; + \node[task,inner sep=-4.5pt,below=of C1,fill=white,xshift=5em,yshift=-3.0em] (Td) {\ldots}; + \node[task,inner sep=-4.5pt,below=of C1,fill=white,xshift=3.5em,yshift=-1.5em] (T2) {Task\textsubscript{2}}; + \node[task,inner sep=-4.5pt,below=of C1,fill=white,xshift=2em] (T1) {Task\textsubscript{1}}; + + \node[share,node distance=6em,right=of T1,fill=white,xshift=4.5em,yshift=-4.5em] (Sn) {SDS\textsubscript{n}}; + \node[share,node distance=6em,right=of T1,fill=white,xshift=3em,yshift=-3.0em] (Sd) {\ldots}; + \node[share,node distance=6em,right=of T1,fill=white,xshift=1.5em,yshift=-1.5em] (S2) {SDS\textsubscript{2}}; + \node[share,node distance=6em,right=of T1,fill=white] (S1) {SDS\textsubscript{1}}; + + \node[fit={(T1)(Sn)},draw] (TS) {}; + + % line between client and server + \draw [dotted] ([xshift=-5em,yshift=-11em]C1.south west) node[left,above]{server} node[left,below]{device} -- ([xshift=5em,yshift=-11em]CN.south east); + + % device 1 + \node[task,text width=1.5em,inner sep=-4.5pt,node distance=12em,below=of C1,double copy shadow={shadow xshift=.4em,shadow yshift=-.4em},fill=white] (D1T1) {}; + \node[share,text width=.3em,text height=.8ex,right=of D1T1,double copy shadow={shadow xshift=.4em,shadow yshift=-.4em},fill=white] (D1S1) {}; + + \node[draw,fit={(D1S1)(D1T1)([shift={(1.2em,-1.2em)}]D1S1.south east)},label=below:{\scriptsize mTask device\textsubscript{1}}] (D1) {}; + + % device 2 + \node[task,text width=1.5em,inner sep=-4.5pt,node distance=12em,below=of C2,double copy shadow={shadow xshift=.4em,shadow yshift=-.4em},fill=white] (D2T1) {}; + \node[share,text width=.3em,text height=.8ex,right=of D2T1,double copy shadow={shadow xshift=.4em,shadow yshift=-.4em},fill=white] (D2S1) {}; + + \node[draw,fit={(D2S1)(D2T1)([shift={(1.2em,-1.2em)}]D2S1.south east)},label=below:{\scriptsize mTask device\textsubscript{2}}] (D2) {}; + + % device ... + \node[right=of D2] {\ldots}; + + % device n + \node[task,text width=1.5em,inner sep=-4.5pt,node distance=12em,below=of CN,double copy shadow={shadow xshift=.4em,shadow yshift=-.4em},fill=white] (DNT1) {}; + \node[share,text width=.3em,text height=.8ex,right=of DNT1,double copy shadow={shadow xshift=.4em,shadow yshift=-.4em},fill=white] (DNS1) {}; + + \node[draw,fit={(DNS1)(DNT1)([shift={(1.2em,-1.2em)}]DNS1.south east)},label=below:{\scriptsize mTask device\textsubscript{n}}] (DN) {}; + + % iTask server + \node[fit={(C1)([shift={(1em,-1.2em)}]DN.south east)},draw,label={iTask server}] {}; + + % Arrows + \draw [<->] (C1) -- (T1); + \draw [<->] (C2) -- (T1); + \draw [<->] (CN) -- (T1); + + \draw [<->] (T1) -- (S1); + \draw [<->] (T1) -- (S2); + \draw [<->] (T1) -- (Sn); + + \draw [<->] (Tn) -- node [midway,above,fill=white] {\texttt{liftmTask}} (D2T1); + \draw [<->] (Sn) -- node [midway,above,fill=white] {\texttt{lowerSds}} (D2S1); + + \draw [<->] (D1T1) -- (D1S1); + \draw [<->] (D2T1) -- (D2S1); + \draw [<->] (DNT1) -- (DNS1); + + \draw [<->] (D1.north) to [in=180,out=135] node [midway,above,fill=white] {\texttt{withDevice}} (TS.west); \end{tikzpicture} \end{document}