comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: ANN: Simple components v3.22 multiple connections servers support
Date: Sat, 16 Mar 2013 09:46:17 +0100
Date: 2013-03-16T09:46:17+01:00	[thread overview]
Message-ID: <1v9a2rt2jgs2d$.1rnxj1hfcv93p$.dlg@40tude.net> (raw)

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



                 reply	other threads:[~2013-03-16  8:46 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox