3.2.1.11 Enumeration of FSRM Objects
All FSRM objects listed in section 3.2.1 can be returned via collection objects. Section 4.1 also contains an example of how a collection object is created and used. When the client calls a method to request a collection, the server creates a collection object implementing the IFsrmCollection interface (section 3.2.4.2.1) and returns the interface pointer to the client to allow it to enumerate through the requested objects. The collection remains valid until the client releases all of its references to the interface. For each collection object, the server maintains the following information:
Objects Being Enumerated: A list of pointers to the FSRM objects being enumerated with the following requirements:
At the creation of the collection object, the list is populated with the objects to return, dictated by the particular specification of the method that the client calls.
The same object is not listed more than once.
After the list has been populated, the order of entries in the list is static.
New FSRM objects added to the server after initial populating are not added to the list of objects being enumerated.
If an FSRM object in the list is removed from the server it is not removed from the list of objects being enumerated. If the removed object is later accessed by the client, the server will use the client's copy of the object whenever the client attempts to access the object's interface methods.
state: The state of the collection of Objects Being Enumerated, which contains FsrmCollectionState (section 2.2.1.2.4) values.