Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
L
LabComm
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Anders Blomdell
LabComm
Commits
9a724313
Commit
9a724313
authored
10 years ago
by
Sven Gestegård Robertz
Browse files
Options
Downloads
Patches
Plain Diff
started elaborating
parent
5f5757fe
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
doc/tech_report.tex
+36
-5
36 additions, 5 deletions
doc/tech_report.tex
with
36 additions
and
5 deletions
doc/tech_report.tex
+
36
−
5
View file @
9a724313
...
...
@@ -28,7 +28,10 @@ application sees fit.
The LabComm system is based on a binary protocol and
and a compiler that generates encoder/decoder routines for popular languages
including C, Java, and Python.
including C, Java, and Python. There is also a standard library for the
languages supported by the compiler, containing generic routines for
encoding and decoding types and samples, and interaction with
application code.
The LabComm compiler accepts type and sample declarations in a small language
that is similar to C or Java type-declarations.
...
...
@@ -44,10 +47,15 @@ where the overhead of communication has to be kept at a minimum, hence LabComm
only requires one-way communication to operate. The one-way operation also has
the added benefit of making LabComm suitable as a storage format.
Two-way comminication adds complexity, in particular for hand-shaking
during establishment of connections, and the LabComm library provides
support for (for instance) avoiding deadlocks during such hand-shaking.
\section
{
Communication model
}
LabComm provides self-describing communication channels, by always transmitting
a machine readable description of the data before actual data is sent.
a machine readable description of the data before actual data is
sent
\footnote
{
Sometimes referred to as
\emph
{
in-band
}
self-describing
}
.
Therefore, communication on a LabComm channel has two phases
\begin{enumerate}
...
...
@@ -88,11 +96,34 @@ The roles in setting up, and maintaining, the configuration of a channel are as
\item
if an unhandled signature is received, pauses the channel and informs the application
\end{itemize}
\subsection
{
Reconfiguration
}
The fundamental communication model can be generalized to the life-cycle
of a concrete communication channel, including the transport layer,
between two end-points. Then, the communication phases are
\begin{enumerate}
\item
\emph
{
Establishment
}
of communication channel at the transport layer
\item
\emph
{
Configuration
}
of the LabComm channel (registration of sample
types)
\item
\emph
{
Operation
}
(transmission of samples)
\end{enumerate}
where it is possible to
\emph
{
reconfigure
}
a channel by transitioning
back from phase 3 to phase 2. That allows dynamic behaviour, as a sample
type can be added or redefined at run-time. It also facilitates error
handling in two-way channels.
\section
{
The Labcomm language
}
The following examples do not cover the entire language
specification (see appendix~
\ref
{
language
_
grammar
}
), but might serve as a
gentle introduction to the LabComm language.
The LabComm language is used to describe data types, and from such data
descriptions, the compiler generates code for encoding and decoding
samples. The language is quite similar to C struct declarations, with
some exceptions. We will now introduce the language through a set of
examples.
These examples do not cover the entire language
specification (see appendix~
\ref
{
language
_
grammar
}
for the complete
grammar), but serve as a gentle introduction to the LabComm
language covering most common use-cases.
\subsection
{
Primitive types
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment