An application can add and remove administrative facets using the Communicator
operations shown below:
module Ice { local interface Communicator { // ... void addAdminFacet(Object servant, string facet); Object removeAdminFacet(string facet); }; };
The addAdminFacet
operation installs a new facet with the given name, or raises AlreadyRegisteredException
if a facet already exists with the same name. The removeAdminFacet
operation removes (and returns) the facet with the given name, or raises NotRegisteredException
if no matching facet is found.
The mechanism for filtering administrative facets also applies to application-defined facets. If you call addAdminFacet
while a filter is in effect, and the name of your custom facet does not match the filter, the Ice run time will not expose your facet but instead keeps a reference to it so that a subsequent call to removeAdminFacet
is possible.
We provide an example of using these communicator operations in our discussion of the Process
facet.