Interface PIHandler

All Superinterfaces:
AutoCloseable, Closeable
All Known Implementing Classes:
PIHandlerImpl, PINoOpHandlerImpl

public interface PIHandler extends Closeable
This interface defines the PI interface that is used to interface the rest of the ORB to the PI implementation.
  • Method Details

    • initialize

      void initialize()
      Complete the initialization of the PIHandler. This will execute the methods on the ORBInitializers, if any are defined. This must be done here so that the ORB can obtain the PIHandler BEFORE the ORBInitializers run, since they will need access to the PIHandler through the ORB.
    • destroyInterceptors

      void destroyInterceptors()
    • objectAdapterCreated

      void objectAdapterCreated(ObjectAdapter oa)
      Called when a new object adapter is created.
      Parameters:
      oa - The adapter associated with the interceptors to be invoked.
    • adapterManagerStateChanged

      void adapterManagerStateChanged(int managerId, short newState)
      Called whenever a state change occurs in an adapter manager.
      Parameters:
      managerId - managerId The adapter manager id
      newState - newState The new state of the adapter manager, and by implication of all object adapters managed by this manager.
    • adapterStateChanged

      void adapterStateChanged(ObjectReferenceTemplate[] templates, short newState)
      Called whenever a state change occurs in an object adapter that was not caused by an adapter manager state change.
      Parameters:
      templates - The templates that are changing state.
      newState - The new state of the adapters identified by the templates.
    • disableInterceptorsThisThread

      void disableInterceptorsThisThread()
      Called for pseudo-ops to temporarily disable portable interceptor hooks for calls on this thread. Keeps track of the number of times this is called and increments the disabledCount.
    • enableInterceptorsThisThread

      void enableInterceptorsThisThread()
      Called for pseudo-ops to re-enable portable interceptor hooks for calls on this thread. Decrements the disabledCount. If disabledCount is 0, interceptors are re-enabled.
    • invokeClientPIStartingPoint

      void invokeClientPIStartingPoint() throws RemarshalException
      Called when the send_request or send_poll portable interception point is to be invoked for all appropriate client-side request interceptors.
      Throws:
      RemarshalException - - Thrown when this request needs to be retried.
    • invokeClientPIEndingPoint

      Exception invokeClientPIEndingPoint(int replyStatus, Exception exception)
      Called when the appropriate client ending interception point is to be invoked for all apporpriate client-side request interceptors.
      Parameters:
      replyStatus - One of the constants in iiop.messages.ReplyMessage indicating which reply status to set.
      exception - The exception before ending interception points have been invoked, or null if no exception at the moment.
      Returns:
      The exception to be thrown, after having gone through all ending points, or null if there is no exception to be thrown. Note that this exception can be either the same or different from the exception set using setClientPIException. There are four possible return types: null (no exception), SystemException, UserException, or RemarshalException.
    • makeCompletedClientRequest

      Exception makeCompletedClientRequest(int replyStatus, Exception exception)
      Called when a retry is needed after initiateClientPIRequest but before invokeClientPIRequest. In this case, we need to properly balance initiateClientPIRequest/cleanupClientPIRequest calls, but WITHOUT extraneous calls to invokeClientPIEndingPoint (see bug 6763340).
      Parameters:
      replyStatus - One of the constants in iiop.messages.ReplyMessage indicating which reply status to set.
      exception - The exception before ending interception points have been invoked, or null if no exception at the moment.
      Returns:
      The exception to be thrown, after having gone through all ending points, or null if there is no exception to be thrown. Note that this exception can be either the same or different from the exception set using setClientPIException. There are four possible return types: null (no exception), SystemException, UserException, or RemarshalException.
    • initiateClientPIRequest

      void initiateClientPIRequest(boolean diiRequest)
      Invoked when a request is about to be created. Must be called before any of the setClientPI* methods so that a new info object can be prepared for information collection.
      Parameters:
      diiRequest - True if this is to be a DII request, or false if it is a "normal" request. In the DII case, initiateClientPIRequest is called twice and we need to ignore the second one.
    • cleanupClientPIRequest

      void cleanupClientPIRequest()
      Invoked when a request is about to be cleaned up. Must be called after ending points are called so that the info object on the stack can be deinitialized and popped from the stack at the appropriate time.
    • setClientPIInfo

      void setClientPIInfo(RequestImpl requestImpl)
      Notifies PI of additional information for client-side interceptors. PI will use this information as a source of information for the ClientRequestInfo object.
      Parameters:
      requestImpl - request used as source of information
    • setClientPIInfo

      void setClientPIInfo(MessageMediator messageMediator)
      Notify PI of the MessageMediator for the request.
      Parameters:
      messageMediator - Mediator to notify
    • invokeServerPIStartingPoint

      void invokeServerPIStartingPoint()
      Called when the appropriate server starting interception point is to be invoked for all appropriate server-side request interceptors.
      Throws:
      ForwardException - Thrown if an interceptor raises ForwardRequest. This is an unchecked exception so that we need not modify the entire execution path to declare throwing ForwardException.
    • invokeServerPIIntermediatePoint

      void invokeServerPIIntermediatePoint()
      Called when the appropriate server intermediate interception point is to be invoked for all appropriate server-side request interceptors.
      Throws:
      ForwardException - Thrown if an interceptor raises ForwardRequest. This is an unchecked exception so that we need not modify the entire execution path to declare throwing ForwardException.
    • invokeServerPIEndingPoint

      void invokeServerPIEndingPoint(ReplyMessage replyMessage)
      Called when the appropriate server ending interception point is to be invoked for all appropriate server-side request interceptors.
      Parameters:
      replyMessage - The iiop.messages.ReplyMessage containing the reply status.
      Throws:
      ForwardException - Thrown if an interceptor raises ForwardRequest. This is an unchecked exception so that we need not modify the entire execution path to declare throwing ForwardException.
    • initializeServerPIInfo

      void initializeServerPIInfo(MessageMediator request, ObjectAdapter oa, byte[] objectId, ObjectKeyTemplate oktemp)
      Notifies PI to start a new server request and set initial information for server-side interceptors. PI will use this information as a source of information for the ServerRequestInfo object. poaimpl is declared as an Object so that we need not introduce a dependency on the POA package.
      Parameters:
      request - Request holder, included the Connection
      oa - Object Adapter
      objectId - id of object
      oktemp - template for object
    • setServerPIInfo

      void setServerPIInfo(Object servant, String targetMostDerivedInterface)
      Notifies PI of additional information reqired for ServerRequestInfo.
      Parameters:
      servant - The servant. This is java.lang.Object because in the POA case, this will be a org.omg.PortableServer.Servant whereas in the ServerRequestDispatcher case this will be an ObjectImpl.
      targetMostDerivedInterface - The most derived interface. This is passed in instead of calculated when needed because it requires extra information in the POA case that we didn't want to bother creating extra methods for to pass in.
    • setServerPIInfo

      void setServerPIInfo(Exception exception)
      Notifies PI of additional information required for ServerRequestInfo.
      Parameters:
      exception - the exception that will be returned
    • setServerPIInfo

      void setServerPIInfo(NVList arguments)
      Notifies PI of additional information for server-side interceptors. PI will use this information as a source of information for the ServerRequestInfo object. These are the arguments for a DSI request.
      Parameters:
      arguments - Arguments for a DSI request.
    • setServerPIExceptionInfo

      void setServerPIExceptionInfo(Any exception)
      Notifies PI of additional information for server-side interceptors. PI will use this information as a source of information for the ServerRequestInfo object. This is the exception of a DSI request.
      Parameters:
      exception - Exception of a DSI request
    • setServerPIInfo

      void setServerPIInfo(Any result)
      Notifies PI of additional information for server-side interceptors. PI will use this information as a source of information for the ServerRequestInfo object. This is the result of a DSI request.
      Parameters:
      result - Result of a DSI request
    • cleanupServerPIRequest

      void cleanupServerPIRequest()
      Invoked when a request is about to be cleaned up. Must be called after ending points are called so that the info object on the stack can be deinitialized and popped from the stack at the appropriate time.
    • create_policy

      Policy create_policy(int type, Any val) throws PolicyError
      Throws:
      PolicyError
    • register_interceptor

      void register_interceptor(Interceptor interceptor, int type) throws DuplicateName
      Throws:
      DuplicateName
    • getPICurrent

      Current getPICurrent()
    • registerPolicyFactory

      void registerPolicyFactory(int type, PolicyFactory factory)
    • allocateServerRequestId

      int allocateServerRequestId()