From 88bfe766cef643518be8bd9fad64895c7f2f9147 Mon Sep 17 00:00:00 2001 From: "Sven G. Robertz" <sven@cs.lth.se> Date: Fri, 17 May 2013 15:36:17 +0200 Subject: [PATCH] added a bit on library structure --- doc/tech_report.tex | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/doc/tech_report.tex b/doc/tech_report.tex index d1444c2..a39f5f9 100644 --- a/doc/tech_report.tex +++ b/doc/tech_report.tex @@ -144,13 +144,50 @@ only arrays of arrays. sample user_type another_user_type_instance; \end{verbatim} -\section{User actions} +\section{The LabComm system} -User actions (similar to ioctl()) allowing the application or a higher level +The LabComm system consists of a compiler for generating code from the data +descriptions, and libraries providing LabComm communication facilities in, +currently, C, Java, Python, and C#. + +\subsection{The LabComm compiler} + +\subsection{The LabComm library} + +The LabComm libraries contain functionality for the end-to-end transmission +of samples. They are divided into two layers, where the upper layer implements +the general encoding and decoding of samples, and the lower one deals with +the transmission of the encoded byte stream on a particular transport layer. + +Thus, the LabComm communication stack looks like this: +\begin{verbatim} + _______________________ + | Application | + +---------------------+ + | encoder | decoder | to/from labcomm encoded byte stream + +----------+----------+ + | writer | reader | transmit byte stream over particular transport + +----------+----------+ + | transport layer / OS| + +---------------------+ +\end{verbatim} + +\subsubsection{LabComm actions} + +(similar to ioctl()) +The encoder/writer and decoder/reader interfaces consist of a set of actions + +One example of this is that there is a a separate writer action for +transmitting signatures, allowing the writer to treat a signature differently +from encoded samples, e.g., to allow handshaking during channel setup. + +User actions allow the application or a higher level protocol to communicate with the underlying transport layer through the LabComm -encoder A special case of this is a specific action informing the underlying -transport that a signature is being sent (to allow handshaking) +encoder. +One example is reliable communication, which is controlled from the application +but needs to be implemented for each transport at at the reader/writer level. +(Or not, e.g., TCP) \section{LabComm is not...} -- GitLab