diff options
Diffstat (limited to 'TAO/tao/PortableServer/IdUniquenessStrategyUnique.cpp')
-rw-r--r-- | TAO/tao/PortableServer/IdUniquenessStrategyUnique.cpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/TAO/tao/PortableServer/IdUniquenessStrategyUnique.cpp b/TAO/tao/PortableServer/IdUniquenessStrategyUnique.cpp new file mode 100644 index 00000000000..64edae4df15 --- /dev/null +++ b/TAO/tao/PortableServer/IdUniquenessStrategyUnique.cpp @@ -0,0 +1,81 @@ +// $Id$ + +#include "IdUniquenessStrategyUnique.h" +#include "Root_POA.h" + +ACE_RCSID (PortableServer, + Id_Uniqueness_Strategy, + "$Id$") + +namespace TAO +{ + namespace Portable_Server + { + IdUniquenessStrategyUnique::IdUniquenessStrategyUnique (void) : + poa_ (0) + { + } + + IdUniquenessStrategyUnique::~IdUniquenessStrategyUnique() + { + } + + 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; + } + + ACE_FACTORY_DEFINE (TAO_PortableServer, 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 + ) + +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) + template class ACE_Dynamic_Service<IdUniquenessStrategyUnique>; +#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) +#pragma instantiate ACE_Dynamic_Service<IdUniquenessStrategyUnique> +#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ + } +} |