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: