\documentstyle[11pt]{article}
\raggedbottom
\setlength{\topmargin}{.5in}
\setlength{\headsep}{0in}
\setlength{\textwidth}{6.5in}
\setlength{\textheight}{8in}
\setlength{\parskip}{2ex}
\setlength{\oddsidemargin}{0in}
\setlength{\evensidemargin}{0in}
\setlength{\parindent}{2em}
\setlength{\unitlength}{1mm}
\begin{document}


\title{libsimpcs: Simple Client/Server library}
\author{E. Jay Berkenbilt}
\date{\today}

\maketitle
\tableofcontents

\section{Overview}

libsimpcs is a library that can be used for convenient
implementation of simple clients and servers.  It is implemented
as a layer on top of libqrpc\footnote{see \ref{app:qrpc}}.  The
server can can be standalone or inetd-based and will use tcp.
The clients don't have to know anything about the underlying
application.  In this model, the client simply passes a command
entered by the user to the server.  The client can determine
some information about what command are available (command names
and a regular-expression-like usage description for each
command).

\section{Opcodes}

\begin{itemize}

\item client $\rightarrow$ server

\begin{description}

\item[COMMAND:] send a null-terminated array of null-terminated
strings to the server who will process the command.  During the
execution of a command, control switches to the server.  At that
time, the server can make requests of the client.

\item[LIST\_CMDS:] find out valid commands and a
regular-expression-like description of their usages.

\end{description}

\item server $\rightarrow$ client

\begin{description}

\item[COMMAND:] acknowledge that command has completed and
return control to the client.  This is accompanied by a status
string.

\end{description}

\end{itemize}

\end{document}
