Previous | Table of Contents | Next |
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:
1. Waits for all requests in progress to complete.
2. Calls the Interceptor::destroy operation for each interceptor.
3. Completes destruction of 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.)