#include <Forwarder.h>
Inheritance diagram for ImR_Forwarder
Public Methods | |
ImR_Forwarder (ImplRepo_i *ir_impl) | |
Constructor. More... | |
virtual PortableServer::Servant | preinvoke ( const PortableServer::ObjectId &oid, PortableServer::POA_ptr poa, const char * operation, PortableServer::ServantLocator::Cookie &cookie TAO_ENV_ARG_DECL ) throw (CORBA::SystemException, PortableServer::ForwardRequest) |
Called before the invocation begins. More... | |
virtual void | postinvoke (const PortableServer::ObjectId &oid, PortableServer::POA_ptr poa, const char * operation, PortableServer::ServantLocator::Cookie cookie, PortableServer::Servant servant TAO_ENV_ARG_DECL) throw (CORBA::SystemException) |
Called after the invocation finishes. More... | |
Private Attributes | |
ImplRepo_i* | imr_impl_ |
Where we find out where to forward to. | |
PortableServer::Current_var | poa_current_var_ |
POA reference. |
This class is provides a ServantLocator implementation that is used to handle arbitrary calls and forward them to the correct place.
|
Constructor. This constructor takes in orb and ImplRepo_i pointers to store for later use. It also grabs a reference to the POACurrent object for use in preinvoke. |
|
Called after the invocation finishes. The postinvoke method just deletes the passed in servant. |
|
Called before the invocation begins. We figure out the intended recipient from the POA name. After activating the server, we throw a forwarding exception to the correct server. The big complicated thing here is that we have to create the forwarding ior based on what we already have. So we combine the endpoint received from activate_server_i and append the objectid from the request to it.
|
|
Where we find out where to forward to.
|
|
POA reference.
|