diff options
Diffstat (limited to 'TAO/examples/CSD_Strategy/ThreadPool5/FooServantList.h')
-rw-r--r-- | TAO/examples/CSD_Strategy/ThreadPool5/FooServantList.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/TAO/examples/CSD_Strategy/ThreadPool5/FooServantList.h b/TAO/examples/CSD_Strategy/ThreadPool5/FooServantList.h new file mode 100644 index 00000000000..fb40809e62e --- /dev/null +++ b/TAO/examples/CSD_Strategy/ThreadPool5/FooServantList.h @@ -0,0 +1,63 @@ +// $Id$ +#ifndef FOOSERVANTLIST_H +#define FOOSERVANTLIST_H + +#include "tao/PortableServer/PortableServer.h" +#include "tao/PortableServer/Servant_Base.h" +#include "ace/SString.h" + + +class ClientTask; +class Foo_i; + +class FooServantList +{ + public: + + FooServantList(const char* prefix, + unsigned num_servants, + unsigned num_clients, + int collocated_test, + int servant_to_deactivate, + CORBA::ORB_ptr orb); + ~FooServantList(); + + void create_and_activate(CORBA::ORB_ptr orb, + PortableServer::POA_ptr poa + ACE_ENV_ARG_DECL); + + void client_done(ACE_ENV_SINGLE_ARG_DECL); + + ClientTask* collocated_client () const; + + void deactivate_servant (ACE_ENV_SINGLE_ARG_DECL); + + private: + + typedef ACE_SYNCH_MUTEX LockType; + typedef ACE_Guard<LockType> GuardType; + + Foo_i** servants_; + PortableServer::ServantBase_var* safe_servants_; + ACE_CString prefix_; + unsigned num_servants_; + + LockType num_clients_lock_; + unsigned num_clients_; + unsigned init_num_clients_; + int collocated_test_; + // The servant_to_be_deactivate_ should be an integer greater than -2. + // -1 => defatult value, DONT deactivate servant. + // 0 => deactivate all servants. + // > 0 => the index of the servant to be deactivated. + int servant_to_deactivate_; + + ClientTask* collocated_client_; + + /// The poa to activate and deactivate servant. + PortableServer::POA_var poa_; + + CORBA::ORB_var orb_; +}; + +#endif |