Previous Table of Contents Next


21.2 Interceptor Interface

   Portable Interceptor interfaces and related type definitions reside in the module PortableInterceptor. All portable Interceptors inherit from the local interface Interceptor:

   module PortableInterceptor {

   local interface Interceptor { readonly attribute string name; void destroy();

   };};

   Each Interceptor may have a name that may be used administratively to order the lists of Interceptors. Only one Interceptor of a given name can be registered with the ORB for each Interceptor type. An Interceptor may be anonymous; that is, have an empty string as the name attribute. Any number of anonymous Interceptors may be registered with the ORB.

   Interceptor::destroy is called during ORB::destroy. When an application calls ORB::destroy, the ORB:

   Method invocations from within Interceptor::destroy on object references for objects implemented on the ORB being destroyed result in undefined behavior. However, method invocations on objects implemented on an ORB other than the one being destroyed are permitted. (This means that the ORB being destroyed is still capable of acting as a client, but not as a server.)