Hi there ...

I've just uploaded a mature release of NetServer::Generic. (It's been
running a bet-the-company mission-critical financial system for two years,
so I think it's just about beta-tested ;-)

I'm currently considering a new project and just want to clear the proposed
module name with you.

NetServer::Compiler     idph    state machine compiler for TCP/IP servers

NetServer::Compiler will implement a yacc-like tool for building TCP/IP
server daemons. It will accept input files containing state transition
rules (defined in an Augmented Backus-Naur form similar to that used by
RFC 822), and perl code to associate with each state.

The output from NetServer::Compiler will be a perl module that implements
the specified protocol using NetServer::Generic or NetServer::FastSelect
as a shell. (For example: by feeding an ABNF grammar describing NNTP,
and associated perl subroutines for messing with the contents of a news
spool directory, NetServer::Compiler will emit a perl module embodying
an NNTP server.) Alternatively, NetServer::Compiler will load and
execute the input file as a server process.

The main use of NetServer::Compiler is to rapidly prototype new TCP/IP-
based network services. (A secondary -- speculative -- use is to provide
a complete drop-in 100% pure perl replacement for inetd :-).

This may need to be accompanied by NetServer::FastSelect. 
NetServer::Generic's non-forking, single-threaded (select-based) server 
mode is currently defective insofar as it can block under heavy i/o loads.
To address this, I've written a non-blocking select-based server module,
but it breaks with the NetServer::Generic API. I haven't released this
yet, and am considering using it as the server back-end for 
NetServer::Compiler.

(I should add that I've been thinking about N:C a fair bit lately but
haven't actually begun bending code. Still got a few chapters of the Dragon
book to read ...)

Any comments?



-- Charlie Stross



Reply via email to