Hi, The following project was submitted to Savannah. It needs evaluation to become a GNU package, can you give it a look, please ?
Submitter: <[EMAIL PROTECTED]> 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 "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) -- the Savannah admin _______________________________________________ Message sent via/by Savannah http://savannah.nongnu.org/ _______________________________________________ Savannah-help-public mailing list [EMAIL PROTECTED] http://lists.gnu.org/mailman/listinfo/savannah-hackers