From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,65ae6e892cff7524,start X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit X-Received: by 10.180.106.161 with SMTP id gv1mr1535625wib.4.1363423588076; Sat, 16 Mar 2013 01:46:28 -0700 (PDT) Path: bp2ni95254wib.1!nntp.google.com!proxad.net!feeder1-2.proxad.net!usenet-fr.net!gegeweb.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: ANN: Simple components v3.22 multiple connections servers support Date: Sat, 16 Mar 2013 09:46:17 +0100 Organization: cbb software GmbH Message-ID: <1v9a2rt2jgs2d$.1rnxj1hfcv93p$.dlg@40tude.net> Reply-To: mailbox@dmitry-kazakov.de NNTP-Posting-Host: p+zKE0HPHYmgiZzsZLLeGQ.user.speranza.aioe.org Mime-Version: 1.0 X-Complaints-To: abuse@aioe.org User-Agent: 40tude_Dialog/2.0.15.1 X-Notice: Filtered by postfilter v. 0.8.2 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Date: 2013-03-16T09:46:17+01:00 List-Id: This version provides support for designing multiple connections TCP/IP servers. The connections are handled by one task. Although servers backed by a pool of working tasks are supported too. The server uses socket-select for socket I/O (based on GNAT.Sockets). Since programming a state machine parsing incoming packets is difficult, the library eases that. You simply put types representing elements of the packet into the custom connection type like this: type My_Protocol is new State_Machine is record Header : Big_Endian.Unsigneds.Usigned_16_Data_Item; Value : Big_Endian.Unsigneds.Usigned_32_Data_Item; ... end record; overriding procedure Process_Packet (Client : in out My_Protocol); The state machine will notify when all items are received by calling Process_Packet. The library provides implementations of big- and little-endian encoded integers, unsigneds, IEEE floats, as well as null terminated strings and equivalent of variant records. A sample implementation of a fully functional HTTP implementation is included. It does not access host file system, it does not allocate memory dynamically on receipt unless at user request. CGI and multipart bodies are supported. http://www.dmitry-kazakov.de/ada/components.htm -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de