Some thinking later and I've split the network code into three files.
If anyone wants to play around with it, I have a (temporary) extra ASDF
definition to make it possibel to load noctool and noctool-with-network
separately (makes it slightly easier to find network-specific compilation
issues), I'll paste it in towards the end.
Now, what I've done, to make the protocol dispatch easier (hahaha) to follow,
is a dispatch table, keyed off the protocol message header and a macro taht
defines handlers.
The defhandler macro looks like this:
(defhandler <function name> (<protocol header> <rest> <of> <message>...)
... function body goes here)
This does two things, it defines a function <function name>, with CONN as the
first argument (in most cases, you need to know what connection to send a
reply back to) and the message type thingie declared as ignorable (since,
most of the time, it's only used for dispatching, anyway).
Not very tested, as of yet, I'll probably need to frob around with how to
retrieve and set proxy objects, but...
And here's the system definition (once the network code is a bit more stable
and "with it", I'll merge this into the main system definition, I won't check
this temp definition into CVS):
(in-package :asdf)
(defsystem "noctool-network"
:depends-on ("noctool")
:components ((:file "network-globals")
(:file "network-utils" :depends-on ("network-globals"))
(:file "network" :depends-on ("network-utils" "network-globals"))))
//Ingvar