Files
sics/udpquieck.tex

95 lines
3.8 KiB
TeX

\subsection{UDPquieck}
At SinQ a requirement is that newly created data files are automatically
copied to another computer. This is for data safety. To have this done by
the instrument control program would raise stability problems: what to do
when the remote computer fails, when transfers are to slow or all data has
to be transferred again. Therefore the copying of files was delegated to a
second process. Now a a means is needed to tell the second process, that a
new data file has been created. This means is this module. It sends a UDP
message on a predefined port. The data copying process can receive or not
and act accordingly. Furthermore this scheme can be used to have other
processes act upon a new data file as well. The message sent is simple: it
consists of the string QUIECK/ followed by the filename. A new command is
implemented with the name udpquieck. This shall be a hidden command. As only
one such facility is needed for a given SICS server, all necessary data is
held in the implementation file udpquieck.c. Anyway, there is only one
structure holding network data.
The configuration of the udpport is done via a special server
option QuieckPort.
Laater on this facility may be extended to send arbitrary messages to
the UDP port for further coordination tasks. This is catered for by
having different message types. However, as of now only file messages
are supported.
Needless to say, that the second process must be able to interpret the
uDP messages sent by the SICS server.
The following interface is implemented:
\begin{flushleft} \small
\begin{minipage}{\linewidth} \label{scrap1}
$\langle$quieck {\footnotesize ?}$\rangle\equiv$
\vspace{-1ex}
\begin{list}{}{} \item
\mbox{}\verb@@\\
\mbox{}\verb@@\\
\mbox{}\verb@#define QUIECK 1@\\
\mbox{}\verb@@\\
\mbox{}\verb@ void KillQuieck(void *pData);@\\
\mbox{}\verb@@\\
\mbox{}\verb@ int SendQuieck(int iType, char *filename);@\\
\mbox{}\verb@@\\
\mbox{}\verb@ int QuieckAction(SConnection *pCon, SicsInterp *pSics, void *pData,@\\
\mbox{}\verb@ int argc, char *argv[]);@\\
\mbox{}\verb@@\\
\mbox{}\verb@@$\diamond$
\end{list}
\vspace{-1ex}
\footnotesize\addtolength{\baselineskip}{-1ex}
\begin{list}{}{\setlength{\itemsep}{-\parsep}\setlength{\itemindent}{-\leftmargin}}
\item Macro referenced in scrap ?.
\end{list}
\end{minipage}\\[4ex]
\end{flushleft}
\begin{flushleft} \small
\begin{minipage}{\linewidth} \label{scrap2}
\verb@"udpquieck.h"@ {\footnotesize ? }$\equiv$
\vspace{-1ex}
\begin{list}{}{} \item
\mbox{}\verb@@\\
\mbox{}\verb@/*------------------------------------------------------------------------@\\
\mbox{}\verb@ U D P Q U I E C K@\\
\mbox{}\verb@ @\\
\mbox{}\verb@ udpquieck sends a notification message on a UDP port when a new data@\\
\mbox{}\verb@ file has been created. @\\
\mbox{}\verb@@\\
\mbox{}\verb@ Mark Koennecke, August 1998@\\
\mbox{}\verb@---------------------------------------------------------------------------*/@\\
\mbox{}\verb@#ifndef UDPQUIECK@\\
\mbox{}\verb@#define UDPQUIECK@\\
\mbox{}\verb@@$\langle$quieck {\footnotesize ?}$\rangle$\verb@@\\
\mbox{}\verb@#endif@\\
\mbox{}\verb@@$\diamond$
\end{list}
\vspace{-2ex}
\end{minipage}\\[4ex]
\end{flushleft}
The functions:
\begin{description}
\item[KillQuieck] closes the network port at shutdown. Is the
KillFunction used in the SICS interpreter command structure.
\item[SendQuieck] sends a message of type iType and the text filename
to the UDP port. The only supported iType value is QUIECK as defined
in udpquieck.h. Further message types can be supported by adding more
support in this function.
\item[QuieckAction] is the interpreter interface function to this
facility. Yes, messages may be issued by a commadn from the
interpreter for instance within scripts. Again, this seems more useful
when this facility has been extended.
\end{description}