diff options
Diffstat (limited to 'TAO/tao/PortableServer/IdUniquenessStrategyUnique.cpp')
-rw-r--r-- | TAO/tao/PortableServer/IdUniquenessStrategyUnique.cpp | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/TAO/tao/PortableServer/IdUniquenessStrategyUnique.cpp b/TAO/tao/PortableServer/IdUniquenessStrategyUnique.cpp new file mode 100644 index 00000000000..3c5516d4956 --- /dev/null +++ b/TAO/tao/PortableServer/IdUniquenessStrategyUnique.cpp @@ -0,0 +1,79 @@ +// $Id$ + +#include "tao/PortableServer/IdUniquenessStrategyUnique.h" +#include "tao/PortableServer/Root_POA.h" + +ACE_RCSID (PortableServer, + Id_Uniqueness_Strategy, + "$Id$") + + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +namespace TAO +{ + namespace Portable_Server + { + IdUniquenessStrategyUnique::IdUniquenessStrategyUnique (void) : + poa_ (0) + { + } + + void + IdUniquenessStrategyUnique::strategy_init ( + TAO_Root_POA *poa + ACE_ENV_ARG_DECL_NOT_USED) + { + poa_ = poa; + } + + void + IdUniquenessStrategyUnique::strategy_cleanup ( + ACE_ENV_SINGLE_ARG_DECL_NOT_USED) + { + poa_ = 0; + } + + bool + IdUniquenessStrategyUnique::is_servant_activation_allowed ( + PortableServer::Servant servant, + int &wait_occurred_restart_call) + { + // If the specified servant is already in the Active Object Map, the + // ServantAlreadyActive exception is raised. + int result = + this->poa_->is_servant_active (servant, + wait_occurred_restart_call); + + return (!(result || wait_occurred_restart_call)); + } + + bool + IdUniquenessStrategyUnique::allow_multiple_activations (void) const + { + return false; + } + + ::PortableServer::IdUniquenessPolicyValue + IdUniquenessStrategyUnique::type() const + { + return ::PortableServer::UNIQUE_ID; + } + + } +} + +TAO_END_VERSIONED_NAMESPACE_DECL + +ACE_FACTORY_NAMESPACE_DEFINE ( + ACE_Local_Service, + IdUniquenessStrategyUnique, + TAO::Portable_Server::IdUniquenessStrategyUnique) + +ACE_STATIC_SVC_DEFINE ( + IdUniquenessStrategyUnique, + ACE_TEXT ("IdUniquenessStrategyUnique"), + ACE_SVC_OBJ_T, + &ACE_SVC_NAME (IdUniquenessStrategyUnique), + ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ, + 0) |