--- /dev/null
+\def\nodelist{
+ juliet/{(-1,-1)}/XMPP client \code{juliet@example.net}/below/computer,
+ examplenet/{(-1,1)}/XMPP server \code{example.net}/above/server,
+ imexampleorg/{(1,1)}/XMPP server \code{im.example.org}/above/server,
+ romeo/{(1,-1)}/XMPP client \code{romeo@im.example.org}/below/computer%
+}
+\foreach \name/\pos/\text/\tpos/\icon in \nodelist {
+ \node (\name) at \pos { \includegraphics[width=2em]{icon-\icon.pdf} };
+ \node[\tpos=of \name,iconlabel] (\name text) { \text };
+}
+\draw[<->,dashed] (juliet) -- node[anchor=east,label]{s2c} (examplenet);
+\draw[<->] (examplenet) -- node[anchor=south,label]{s2s} (imexampleorg);
+\draw[<->,dashed] (imexampleorg) -- node[anchor=west,label]{s2c} (romeo);
+
\tikzstyle{iconlabel}=[text width=3cm, align=center, font=\footnotesize]
\tikzstyle{label}=[font=\footnotesize]
\begin{tikzpicture}[node distance=0pt,scale=1.5,>=stealth,thick]
- \def\nodelist{
- juliet/{(-1,-1)}/XMPP client \code{juliet@example.net}/below/computer,
- examplenet/{(-1,1)}/XMPP server \code{example.net}/above/server,
- imexampleorg/{(1,1)}/XMPP server \code{im.example.org}/above/server,
- romeo/{(1,-1)}/XMPP client \code{romeo@im.example.org}/below/computer%
- }
- \foreach \name/\pos/\text/\tpos/\icon in \nodelist {
- \node (\name) at \pos { \includegraphics[width=1cm]{icon-\icon.pdf} };
- \node[\tpos=of \name,iconlabel] (\name text) { \text };
- }
- \draw[<->,dashed] (juliet) -- node[anchor=east,label]{s2c} (examplenet);
- \draw[<->] (examplenet) -- node[anchor=south,label]{s2s} (imexampleorg);
- \draw[<->,dashed] (imexampleorg) -- node[anchor=west,label]{s2c} (romeo);
+ \input{fig-xmpparch.tex}
\end{tikzpicture}
\centering
\caption{XMPP architecture, showing server-to-server (s2s) and