Resource manager architecture

Updated: April 19, 2023

Here is the heart of a resource manager:

initialize the dispatch interface
register the pathname with the process manager
DO forever
    receive a message
    SWITCH on the type of message
        CASE io_open:
            perform io_open processing
            ENDCASE
        CASE io_read:
            perform io_read processing
            ENDCASE
        CASE io_write:
            perform io_write processing
            ENDCASE
        .   // etc. handle all other messages that may occur,
        .   // performing processing as appropriate
    ENDSWITCH
ENDDO

The architecture contains three parts:

  1. A channel that is created so that client programs can connect to the resource manager to send it messages.
  2. The pathname (or pathnames) that the resource manager is going to be responsible for. This pathname is registered with the process manager so that it can resolve open requests for that particular pathname to this resource manager.
  3. A loop that receives and processes messages.

This message-processing structure (the switch/case, above) is required for each and every resource manager. However, we provide a set of convenient library functions to handle this functionality (and other key functionality as well).