You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by David Reid <dr...@jetnet.co.uk> on 2001/07/12 14:41:31 UTC
[RANT] Re: lib/apr_signal.c
What does this have to with lib/apr-signal.c????
Come on guys, change the subject if you're changing the topic...
david
> On Thu, Jul 12, 2001 at 12:47:13PM +0200, Sander Striker wrote:
> > [...]
> > > what i suspect is happening in subversion [correct me if i'm
> > > wrong, here!] is that they are writing their own server-code.
> >
> > You're wrong :)
>
> wha-heeey :) i like being wrong :)
>
> > subversion is going to use httpd with mod_dav as the server :)
>
> ... *enthusiastic*... omigud, i'm 25% way through mod_dav.c when
> i looked at the LOC good _grief_. okay, that's irrelevent.
>
> i get the idea.
>
> > Wondering what the framework like socketserver.py looks like.
> > Summary?
>
> SocketServer.py is basically three sets of classes [with
> specialisations of each] that you then 'mix' together to
> get the required combination for your server.
>
> set one:
>
> BaseServer. specialisations: TCPServer and UDPServer
> [i wrote a SQLTableReadingServer
> where the 'request' is the data
> _read_ from a queueing-table!]
>
> Mixin. specialisations: ForkingMixIn and ThreadingMixIn.
> [on the TODO list is a single-process
> Mixin that keeps a list of all connections
> *itself* and has to deal with them one-by-one
> with all the associated blocking and select
> problems etc. on a series of file descriptors]
>
> Handlers. basically this allows you to 'Do' things to a
> request. there are some pre-defined UDP and TCP request-handling
> classes that you still have to over-ride functions to actually
> _do_ something with the request socket, but at least it _gives_
> you a per-connection socket.
>
> the SocketServer framework basically provides a common API to
> create, handle, finish and close requests. you don't have
> to worry about how the request gets _to_ you: you only
> have to provide methods to deal _with_ the request.
>
> so you combine the above classes to get:
>
> ThreadingUDPServer
> ThreadingTCPServer
> ForkingUDPServer
> ForkingTCPServer
>
> and, with the addition of BaseServer, i created
> ForkingSQLTableReadingServer, which polls [yes, i know]
> a SQL table, locks it, reads one entry, deletes it from
> the table, unlocks the table,
> creates a handler for it, passes the entry to the
> handler, the handler Does Its Thing (in this case,
> loads from a SQL table a python script named in the
> request and runs it!)
>
> now, whilst this level of genericity is probably excessive,
> it was trivial to do, and it also provides the means to
> *transparently* add... mmmm.... SSLServer and then
> mix it in with Forking and Threading and you change *zero*
> lines of code - ssl is all done for you.
>
> redirection. loop-back testing. unix-domain-socket server.
> even a TransactNamedPipe server - whatever you can dream up.
>
>
> > It seems that the apache server framework can be extended
> > with other protocols by just adding new modules and filters.
>
> ... what if people don't want to add new modules and new filters?
>
> what if they want to go a separate route but take advantages
> of the best bits of httpd's code, and share the results?
>
> :)
>
> luke
>