|
|
1.1 ! root 1: % run this through LaTeX with the appropriate wrapper ! 2: ! 3: \chapter {A Complete Example}\label{cook:example} ! 4: Now, let's consider a complete example. ! 5: Our application is modeled after the example given in \cite{Courier.BSD}. ! 6: In short, ! 7: we wish to implement a remote lookup facility of the \unix/ \file{/etc/passwd} ! 8: database. ! 9: ! 10: \section {Service Definitions} ! 11: We begin by defining the mundane naming and addressing information for the ! 12: service. ! 13: Using the ``standard'' approach described in Section~\ref{service:define}, ! 14: we select: ! 15: \begin{describe} ! 16: \item[abstract syntax:] defined in the \man isobjects(5) file as: ! 17: \begin{quote}\small\begin{verbatim} ! 18: "local service pci" 1.17.2.n.1 ! 19: \end{verbatim}\end{quote} ! 20: If we select \verb"n" as the lowest unassigned number in the \verb"1.17.2" ! 21: subtree, e.g., \verb"7", we might have: ! 22: \begin{quote}\small\begin{verbatim} ! 23: "isode passwd lookup pci" 1.17.2.7.1 ! 24: \end{verbatim}\end{quote} ! 25: ! 26: \item[application context name:] defined in the \man isobjects(5) file as: ! 27: \begin{quote}\small\begin{verbatim} ! 28: "local service" 1.17.2.n.2 ! 29: \end{verbatim}\end{quote} ! 30: Similarly, for a value of \verb"7" for \verb"n", we have: ! 31: \begin{quote}\small\begin{verbatim} ! 32: "isode passwd lookup" 1.17.2.7.2 ! 33: \end{verbatim}\end{quote} ! 34: ! 35: \item[{\small application-entity information/presentation address:}] ! 36: defined with: ! 37: \begin{quote}\small\begin{verbatim} ! 38: default servicestore 1.17.4.1.n "" "" #p ! 39: \end{verbatim}\end{quote} ! 40: in the \man isoentities(5) file. ! 41: If we select \verb"p" as the lowest unassigned TSAP ID between \verb"1024" ! 42: and \verb"2047" inclusive, e.g., \verb"1040", we might have: ! 43: \begin{quote}\small\begin{verbatim} ! 44: default passwdstore 1.17.4.1.7 "" "" #1040 ! 45: \end{verbatim}\end{quote} ! 46: ! 47: \item[local program:] defined in the \man isoservices(5) file as: ! 48: \begin{quote}\small\begin{verbatim} ! 49: "tsap/local service" #p program arg1 arg2 ... argN ! 50: \end{verbatim}\end{quote} ! 51: If we select \pgm{ros.lookup} as the \unix/ program implementing this ! 52: service, ! 53: we might have something like: ! 54: \begin{quote}\small\begin{verbatim} ! 55: "tsap/isode passwd" #1040 ros.lookup ! 56: \end{verbatim}\end{quote} ! 57: \end{describe} ! 58: ! 59: \section {Remote Operations Module} ! 60: The remote operations module for the service is placed in \file{lookup.ry}. ! 61: This file shown in Figure~\ref{passwd:rom} starting on ! 62: page~\pageref{passwd:rom}. ! 63: ! 64: The \file{Makefile} for the service is shown in Figure~\ref{passwd:make} ! 65: starting on page~\pageref{passwd:make}. ! 66: ! 67: \newpage ! 68: \tagrindfile{passwd-ops}% ! 69: {Remote Operations Module for the Password Lookup Service}{passwd:rom} ! 70: \newpage ! 71: \tagrindfile{passwd-make}{Makefile for the Password Lookup Service}% ! 72: {passwd:make} ! 73: \newpage ! 74: ! 75: \section {Interactive Initiator}\label{passwd:initiator} ! 76: The interactive initiator of the service is placed in \file{lookup.c}. ! 77: This file is shown in Figure~\ref{passwd:init} starting on ! 78: page~\pageref{passwd:init}. ! 79: ! 80: \tagrindfile{passwd-init}{Initiator for the Password Lookup Service}% ! 81: {passwd:init} ! 82: \newpage ! 83: ! 84: \section {Responder}\label{passwd:responder} ! 85: The responder for the service is placed in \file{lookupd.c}. ! 86: This file is shown in Figure~\ref{passwd:resp} starting on ! 87: page~\pageref{passwd:resp}. ! 88: Note that if actual network addresses were associated with the service ! 89: definitions made earlier, ! 90: then the responder could operate using the static discipline. ! 91: ! 92: \tagrindfile{passwd-resp}{Responder for the Password Lookup Service}% ! 93: {passwd:resp}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.