savannah-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Savannah-help-public] [Savannah] tlvcomm want to be a GNU package


From: savannah-hackers
Subject: [Savannah-help-public] [Savannah] tlvcomm want to be a GNU package
Date: Tue, 12 Apr 2005 20:38:31 +0000
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040207 Firefox/0.8

Hi,

The following project was submitted to Savannah. It needs evaluation to
become a GNU package, can you give it a look, please ? 

Submitter: <address@hidden>
Project Full Name:  TLV communication with automatic code generation
Project System Name:  tlvcomm
License:  gpl
Approval URL: https://savannah.gnu.org/admin/groupedit.php?group_id=7481
Description: What does this package do
=========================
This package makes development of a client / server program(s) using TLVs
(type length value) easier by using an IDL (interface definition
language).  High level data structures and functions are defined in the
IDL and a code generator generates C++ code which is linked in both the
client and server side providing both sides access to all the funtions /
data structures defined in the IDL.

Brief description of the architecture
=====================================
This library to uses non-blocking TCP sockets for the client-server
programs.  All remote function calls are non-blocking so a callback
mechanism is used for remote function invocation as well as for
completion.  Using this architecture, the user can avoid multiple threads
which would be needed for blocking function calls.  The engine uses state
based remote function invocation.

To develop a high-performance client server interface, the following
design considerations are maintained -
       - The interface between the client and the server has to be
non-blocking.  To aid this feature,the following are the issues that need
to be addressed.
       - Handle incomplete writes to the socket by implementing buffering
per socket / connection.
       - Handle partial / excess reads of TLV messages coming on the
socket.
       - Develop a infrastructure to handle multiple connections and
multiplex between them.
       - When a complete message has ben retreived on a socket, give
control back to the user.

This library addresses all of the above issues.

There are some tasks that fall under the &quot;user responsibility&quot;
category.  These tasks are are not implemeted in the library because
typically every user does things a little differently.  Besides, these
tasks are so simple that wrapping them in a library function makes little
sense.  These tasks are as follows -
  - Creating a non-blocking socket (sample code is provided).
  - Calling the system calls &quot;bind&quot;, &quot;listen&quot;,
&quot;accept&quot;, &quot;select&quot;, &quot;connect&quot;.  These calls
are not encapsulated in the library because typically, if they are
&quot;wrapped&quot; in a library, they shield the user from programming
the socket to his/her unique requirement.  The library does give example
code which could be used as a starting point for the development of client
/server programs. (sample code provided)




 -- the Savannah admin

_______________________________________________
  Message sent via/by Savannah
  http://savannah.nongnu.org/





reply via email to

[Prev in Thread] Current Thread [Next in Thread]