comp.lang.ada
 help / color / mirror / Atom feed
* ANN: Simple components v3.22 multiple connections servers support
@ 2013-03-16  8:46 Dmitry A. Kazakov
  0 siblings, 0 replies; only message in thread
From: Dmitry A. Kazakov @ 2013-03-16  8:46 UTC (permalink / 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



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2013-03-16  8:46 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-16  8:46 ANN: Simple components v3.22 multiple connections servers support Dmitry A. Kazakov

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