00001
00002
00003 #include "tao/PortableServer/IdUniquenessStrategyFactoryImpl.h"
00004 #include "tao/PortableServer/IdUniquenessStrategy.h"
00005 #include "ace/Dynamic_Service.h"
00006
00007 ACE_RCSID (PortableServer,
00008 IdUniquenessStrategyFactoryImpl,
00009 "IdUniquenessStrategyFactoryImpl.cpp,v 1.9 2006/03/10 07:19:13 jtc Exp")
00010
00011 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00012
00013 namespace TAO
00014 {
00015 namespace Portable_Server
00016 {
00017 IdUniquenessStrategy*
00018 IdUniquenessStrategyFactoryImpl::create (
00019 ::PortableServer::IdUniquenessPolicyValue value)
00020 {
00021 IdUniquenessStrategy* strategy = 0;
00022 switch (value)
00023 {
00024 case ::PortableServer::MULTIPLE_ID :
00025 {
00026 strategy =
00027 ACE_Dynamic_Service<IdUniquenessStrategy>::instance ("IdUniquenessStrategyMultiple");
00028
00029 if (strategy == 0)
00030 ACE_ERROR ((LM_ERROR,
00031 ACE_TEXT ("(%P|%t) %p\n"),
00032 ACE_TEXT ("ERROR, Unable to get ")
00033 ACE_TEXT ("IdUniquenessStrategyMultiple")));
00034
00035 break;
00036 }
00037 case ::PortableServer::UNIQUE_ID :
00038 {
00039 IdUniquenessStrategyFactory *strategy_factory =
00040 ACE_Dynamic_Service<IdUniquenessStrategyFactory>::instance ("IdUniquenessStrategyUniqueFactory");
00041
00042 if (strategy_factory != 0)
00043 strategy = strategy_factory->create (value);
00044 else
00045 ACE_ERROR ((LM_ERROR,
00046 ACE_TEXT ("(%P|%t) %p\n"),
00047 ACE_TEXT ("ERROR, Unable to get ")
00048 ACE_TEXT ("IdUniquenessStrategyUniqueFactory")));
00049
00050 break;
00051 }
00052 }
00053
00054 return strategy;
00055 }
00056
00057 void
00058 IdUniquenessStrategyFactoryImpl::destroy (
00059 IdUniquenessStrategy *strategy
00060 ACE_ENV_ARG_DECL)
00061 {
00062 switch (strategy->type ())
00063 {
00064 case ::PortableServer::MULTIPLE_ID :
00065 {
00066
00067 break;
00068 }
00069 case ::PortableServer::UNIQUE_ID :
00070 {
00071 IdUniquenessStrategyFactory *strategy_factory =
00072 ACE_Dynamic_Service<IdUniquenessStrategyFactory>::instance ("IdUniquenessStrategyUniqueFactory");
00073
00074 if (strategy_factory != 0)
00075 {
00076 strategy_factory->destroy (strategy ACE_ENV_ARG_PARAMETER);
00077 ACE_CHECK;
00078 }
00079 break;
00080 }
00081 }
00082 }
00083
00084 }
00085 }
00086
00087 TAO_END_VERSIONED_NAMESPACE_DECL
00088
00089 ACE_STATIC_SVC_DEFINE (
00090 IdUniquenessStrategyFactoryImpl,
00091 ACE_TEXT ("IdUniquenessStrategyFactory"),
00092 ACE_SVC_OBJ_T,
00093 &ACE_SVC_NAME (IdUniquenessStrategyFactoryImpl),
00094 ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ,
00095 0)
00096
00097 ACE_FACTORY_NAMESPACE_DEFINE (
00098 ACE_Local_Service,
00099 IdUniquenessStrategyFactoryImpl,
00100 TAO::Portable_Server::IdUniquenessStrategyFactoryImpl)