00001
#ifndef maciContainerServices_h
00002
#define maciContainerServices_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
#include <acsutil.h>
00032
#include <acsContainerServices.h>
00033
#include <maciComponentStateManager.h>
00034
#include <acscomponentImpl.h>
00035
#include <logging.h>
00036
#include <maciContainerImpl.h>
00037
#include <cdbDALS.h>
00038
#include <acscomponentS.h>
00039
#include <acsErrTypeContainerServices.h>
00040
#include <acsErrTypeLifeCycle.h>
00041
#include <vector>
00042
#include <string>
00043
#include <iterator>
00044
00045
#include <ace/Synch.h>
00046
#include <ace/Hash_Map_Manager.h>
00047
00048
namespace maci {
00049
00050
class ContainerImpl;
00051
00055 class MACIContainerServices:
public ContainerServices
00056
00057 {
00058
public:
00059
00063
MACIContainerServices(
00064
const maci::Handle componentHandle,
00065 ACE_CString& name,
00066 PortableServer::POA_ptr poa);
00067
00071
virtual ~MACIContainerServices();
00072
00073
public:
00074
00075
void test(
const char* txt);
00080 CORBA::Object*
getCORBAComponent(
const char* name);
00081
00086 CORBA::Object*
getCORBAComponentNonSticky(
const char* name);
00087
00096 CORBA::Object*
getCORBADynamicComponent(maci::ComponentSpec compSpec,
bool markAsDefault);
00097
00106 CORBA::Object*
getCORBACollocatedComponent(maci::ComponentSpec compSpec,
bool markAsDefault,
const char* targetComponent);
00107
00114 CORBA::Object*
getCORBADefaultComponent(
const char* idlType);
00115
00116
public:
00117
00125 ComponentInfo
getComponentDescriptor(
const char* componentName);
00126
00141
ACE_CString_Vector findComponents(
const char *nameWilcard,
const char *typeWildcard);
00142
00153
void releaseComponent(
const char *name);
00154
00160
void releaseAllComponents();
00161
00171 CDB::DAL_ptr
getCDB();
00172
00175 PortableServer::POA_var
getOffShootPOA() {
return m_offShootPOA; }
00176
00186 ACS::OffShoot_ptr
activateOffShoot(PortableServer::Servant cbServant);
00187
00194
void deactivateOffShoot(PortableServer::Servant cbServant);
00195
00200 PortableServer::POA_var
createOffShootPOA();
00201
00215
maci::ComponentStateManager*
getComponentStateManager();
00216
00217
void fireComponentsUnavailable(
ACE_CString_Vector& compNames);
00218
void fireComponentsAvailable(
ACE_CString_Vector& compNames);
00219
00220
private:
00221
00223 maci::Manager_var
m_manager;
00224
00226 maci::ContainerImpl *
m_containerImpl;
00227
00229 PortableServer::POA_var
m_offShootPOA;
00230
00232 maci::Handle
m_componentHandle;
00233
00235 typedef ACE_Hash_Map_Manager <ACE_CString, maci::Handle, ACE_Recursive_Thread_Mutex>
COMPONENT_HASH_MAP;
00236 typedef ACE_Hash_Map_Iterator <ACE_CString, maci::Handle, ACE_Recursive_Thread_Mutex>
COMPONENT_HASH_MAP_ITER;
00237 typedef ACE_Hash_Map_Entry <ACE_CString, maci::Handle>
COMPONENT_HASH_MAP_ENTRY;
00238
00240 COMPONENT_HASH_MAP m_usedComponents;
00241
00243 maci::ComponentStateManager*
componentStateManager_mp;
00244 };
00245
00246 }
00247
00248
#endif // maciContainerServices_h
00249