00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef TAO_REQUESTPROCESSINGSTRATEGYSERVANTACTIVATOR_H
00014 #define TAO_REQUESTPROCESSINGSTRATEGYSERVANTACTIVATOR_H
00015 #include "ace/pre.h"
00016
00017 #include "tao/PortableServer/RequestProcessingStrategyServantManager.h"
00018
00019 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00020 # pragma once
00021 #endif
00022
00023 #if (TAO_HAS_MINIMUM_POA == 0) && !defined (CORBA_E_COMPACT) && !defined (CORBA_E_MICRO)
00024
00025 #include "tao/PortableServer/Servant_Location.h"
00026 #include "tao/PortableServer/PortableServer.h"
00027 #include "tao/PortableServer/ServantActivatorC.h"
00028
00029 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00030
00031 namespace TAO
00032 {
00033 namespace Portable_Server
00034 {
00035 class RequestProcessingStrategyServantActivator
00036 : public RequestProcessingStrategyServantManager
00037 {
00038 public:
00039 RequestProcessingStrategyServantActivator (void);
00040
00041 virtual void strategy_cleanup(ACE_ENV_SINGLE_ARG_DECL);
00042
00043 PortableServer::ServantManager_ptr get_servant_manager (ACE_ENV_SINGLE_ARG_DECL)
00044 ACE_THROW_SPEC ((CORBA::SystemException,
00045 PortableServer::POA::WrongPolicy));
00046
00047 void set_servant_manager (PortableServer::ServantManager_ptr imgr
00048 ACE_ENV_ARG_DECL)
00049 ACE_THROW_SPEC ((CORBA::SystemException,
00050 PortableServer::POA::WrongPolicy));
00051
00052 virtual TAO_SERVANT_LOCATION locate_servant (
00053 const PortableServer::ObjectId &system_id,
00054 PortableServer::Servant &servant
00055 ACE_ENV_ARG_DECL);
00056
00057 virtual PortableServer::Servant locate_servant (
00058 const char *operation,
00059 const PortableServer::ObjectId &system_id,
00060 TAO::Portable_Server::Servant_Upcall &servant_upcall,
00061 TAO::Portable_Server::POA_Current_Impl &poa_current_impl,
00062 int &wait_occurred_restart_call
00063 ACE_ENV_ARG_DECL);
00064
00065 virtual void cleanup_servant (
00066 PortableServer::Servant servant,
00067 const PortableServer::ObjectId &user_id
00068 ACE_ENV_ARG_DECL);
00069
00070 virtual void etherealize_objects (CORBA::Boolean etherealize_objects);
00071
00072 virtual void post_invoke_servant_cleanup(
00073 const PortableServer::ObjectId &system_id,
00074 const TAO::Portable_Server::Servant_Upcall &servant_upcall);
00075
00076 private:
00077 PortableServer::Servant incarnate_servant (
00078 const PortableServer::ObjectId& object_id
00079 ACE_ENV_ARG_DECL);
00080
00081 void etherealize_servant (const PortableServer::ObjectId& object_id,
00082 PortableServer::Servant servant,
00083 CORBA::Boolean cleanup_in_progress
00084 ACE_ENV_ARG_DECL);
00085
00086 private:
00087 PortableServer::ServantActivator_var servant_activator_;
00088 CORBA::Boolean etherealize_objects_;
00089 };
00090 }
00091 }
00092
00093 TAO_END_VERSIONED_NAMESPACE_DECL
00094
00095 #endif
00096
00097 #include "ace/post.h"
00098 #endif