Handling messages

Once we've registered one or more pathnames, we should then be prepared to receive messages from clients. This is done in the “usual” way, with the MsgReceive() function call. There are fewer than 30 well-defined message types that the resource manager handles. To simplify the discussion and implementation, however, they're broken into two groups:

Connect messages
Always contain a pathname; these are either one-shot messages or they establish a context for further I/O messages.
I/O messages
Always based on a connect message; these perform further work.