[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Savannah-register-public] [task #3970] Submission of TLV communication
From: |
Sanjay Jaiman |
Subject: |
[Savannah-register-public] [task #3970] Submission of TLV communication with automatic code generation |
Date: |
Mon, 4 Apr 2005 21:43:25 +0000 |
User-agent: |
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.54 [en] |
URL:
<http://savannah.gnu.org/task/?func=detailitem&item_id=3970>
Summary: Submission of TLV communication with automatic code
generation
Project: Savannah Administration
Submitted by: sjaiman
Submitted on: Mon 04/04/2005 at 21:43
Should Start On: Mon 04/04/2005 at 00:00
Should be Finished on: Thu 04/14/2005 at 00:00
Category: Project Approval
Priority: 5 - Normal
Status: None
Privacy: Public
Percent Complete: 0%
Assigned to: None
Open/Closed: Open
Effort: 0.00
_______________________________________________________
Details:
Site Admin. Approval/Edition URL:
<https://savannah.gnu.org/admin/groupedit.php?group_id=7481>
###### ORIGINAL SUBMISSION DETAILS ######
System Group Name:
-----------------
tlvcomm
Full Name:
----------
TLV communication with automatic code generation
Type:
-----
GNU
License:
--------
GNU General Public License V2 or later
Other License:
--------------
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 "user responsibility" 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 "bind", "listen", "accept", "select", "connect".
These calls are not encapsulated in the library because typically, if they
are "wrapped" 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)
Other Software Required:
------------------------
Linux system with g++
Other Comments:
---------------
#########################################
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/task/?func=detailitem&item_id=3970>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/
- [Savannah-register-public] [task #3970] Submission of TLV communication with automatic code generation,
Sanjay Jaiman <=