diff options
author | William R. Otte <wotte@dre.vanderbilt.edu> | 2006-07-24 15:50:21 +0000 |
---|---|---|
committer | William R. Otte <wotte@dre.vanderbilt.edu> | 2006-07-24 15:50:21 +0000 |
commit | 3aff90f4a822fcf5d902bbfbcc9fa931d6191a8c (patch) | |
tree | 197c810e5f5bce17b1233a7cb8d7b50c0bcd25e2 /TAO/tao/PortableServer/RequestProcessingStrategyServantLocatorFI.cpp | |
parent | 6b846cf03c0bcbd8c276cb0af61a181e5f98eaae (diff) | |
download | ATCD-3aff90f4a822fcf5d902bbfbcc9fa931d6191a8c.tar.gz |
Repo restructuring
Diffstat (limited to 'TAO/tao/PortableServer/RequestProcessingStrategyServantLocatorFI.cpp')
-rw-r--r-- | TAO/tao/PortableServer/RequestProcessingStrategyServantLocatorFI.cpp | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/TAO/tao/PortableServer/RequestProcessingStrategyServantLocatorFI.cpp b/TAO/tao/PortableServer/RequestProcessingStrategyServantLocatorFI.cpp new file mode 100644 index 00000000000..fe3d489977d --- /dev/null +++ b/TAO/tao/PortableServer/RequestProcessingStrategyServantLocatorFI.cpp @@ -0,0 +1,87 @@ +// $Id$ + +#include "tao/PortableServer/RequestProcessingStrategyServantLocatorFI.h" +#include "tao/PortableServer/RequestProcessingStrategy.h" +#include "tao/PortableServer/RequestProcessingStrategyServantLocator.h" +#include "ace/Dynamic_Service.h" +#include "ace/Log_Msg.h" + +ACE_RCSID (PortableServer, + RequestProcessingStrategyServantLocatorFactoryImpl, + "$Id$") + +#if (TAO_HAS_MINIMUM_POA == 0) && !defined (CORBA_E_COMPACT) && !defined (CORBA_E_MICRO) + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +namespace TAO +{ + namespace Portable_Server + { + RequestProcessingStrategy* + RequestProcessingStrategyServantLocatorFactoryImpl::create ( + ::PortableServer::RequestProcessingPolicyValue value, + ::PortableServer::ServantRetentionPolicyValue srvalue) + { + RequestProcessingStrategy* strategy = 0; + + switch (value) + { + case ::PortableServer::USE_SERVANT_MANAGER : + { + switch (srvalue) + { + case ::PortableServer::RETAIN : + { + ACE_ERROR ((LM_ERROR, "Incorrect type in RequestProcessingStrategyServantLocatorFactoryImpl")); + break; + } + case ::PortableServer::NON_RETAIN : + { + ACE_NEW_RETURN (strategy, RequestProcessingStrategyServantLocator, 0); + break; + } + } + break; + } + default : + { + ACE_ERROR ((LM_ERROR, "Incorrect type in RequestProcessingStrategyServantLocatorFactoryImpl")); + break; + } + } + + return strategy; + } + + void + RequestProcessingStrategyServantLocatorFactoryImpl::destroy ( + RequestProcessingStrategy *strategy + ACE_ENV_ARG_DECL) + { + strategy->strategy_cleanup (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + delete strategy; + } + } +} + +TAO_END_VERSIONED_NAMESPACE_DECL + +ACE_STATIC_SVC_DEFINE ( + RequestProcessingStrategyServantLocatorFactoryImpl, + ACE_TEXT ("RequestProcessingStrategyServantLocatorFactory"), + ACE_SVC_OBJ_T, + &ACE_SVC_NAME (RequestProcessingStrategyServantLocatorFactoryImpl), + ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ, + 0) + +ACE_FACTORY_NAMESPACE_DEFINE ( + ACE_Local_Service, + RequestProcessingStrategyServantLocatorFactoryImpl, + TAO::Portable_Server::RequestProcessingStrategyServantLocatorFactoryImpl) + + +#endif /* TAO_HAS_MINIMUM_POA == 0 */ + |