Described herein is a mechanism that follows, at least in part, an object
oriented design pattern. In particular, a class is used to model a shared resource
as a shared resource object. The class creates one instance of the shared resource
object in response to multiple attempts to create a shared resource object from
the class. The class defines various methods used to interact with the object.
The object receives requests to perform operations from the clients. The clients
may register another object to receive from the shared resource object notifications
regarding events about the operations requested by the clients.