00001
#ifndef acsContainerServices_h
00002
#define acsContainerServices_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
#ifndef __cplusplus
00032
#error This is a C++ include file and cannot be used from plain C
00033
#endif
00034
00035
#include <acscomponentS.h>
00036
#include <acscomponentC.h>
00037
#include <maciC.h>
00038
#include <acsErrTypeContainerServices.h>
00039
#include <cdbDALS.h>
00040
#include <acsComponentStateManager.h>
00041
#include <acsThreadManager.h>
00042
#include <logging.h>
00043
#include <loggingLoggable.h>
00044
#include <maciErrType.h>
00045
#include <acsComponentListener.h>
00046
#include <acsComponentSmartPtr.h>
00047
00048
namespace maci {
00049
00058 class ContainerServices :
public Logging::Loggable {
00059
public:
00066
ContainerServices(ACE_CString& compName, PortableServer::POA_ptr poa);
00067
00068
00072
virtual ~ContainerServices();
00073
00074
protected:
00085
virtual CORBA::Object*
getCORBAComponent(
const char* name)=0;
00097
virtual CORBA::Object*
getCORBAComponentNonSticky(
const char* name)=0;
00098
00112
virtual CORBA::Object*
getCORBADynamicComponent(maci::ComponentSpec compSpec,
bool markAsDefault)=0;
00113
00128
virtual CORBA::Object*
getCORBACollocatedComponent(maci::ComponentSpec compSpec,
bool markAsDefault,
const char* targetComponent)
00129 =0;
00130
00141
virtual CORBA::Object*
getCORBADefaultComponent(
const char* idlType)=0;
00142
00143
public:
00144
00150 ACE_CString
getName() {
00151
return m_componentName;
00152 }
00153
00164 PortableServer::POA_var
getPOA() {
00165
return m_poa;
00166 }
00167
00168
00169
void registerComponentListener(
ComponentListener* listener);
00170
void fireComponentsUnavailable(
ACE_CString_Vector& compNames);
00171
void fireComponentsAvailable(
ACE_CString_Vector& compNames);
00172
00184
template<
class T> T*
getComponent(
const char *name);
00185
00198
template<
class T> T*
getComponentNonSticky(
const char *name);
00199
00214
template<
class T> T*
getDynamicComponent(maci::ComponentSpec compSpec,
bool markAsDefault);
00230
template<
class T> T*
getCollocatedComponent(maci::ComponentSpec compSpec,
bool markAsDefault,
const char* targetComponent);
00231
00243
template<
class T> T*
getDefaultComponent(
const char* idlType);
00244
00256
template <
typename T>
00257
SmartPtr<T> getComponentSmartPtr(
const char *name);
00258
00271
template <
typename T>
00272
SmartPtr<T> getComponentNonStickySmartPtr(
const char *name);
00273
00288
template <
typename T>
00289
SmartPtr<T> getDynamicComponentSmartPtr(maci::ComponentSpec compSpec,
bool markAsDefault);
00290
00306
template <
typename T>
00307
SmartPtr<T> getCollocatedComponentSmartPtr(maci::ComponentSpec compSpec,
bool markAsDefault,
const char* targetComponent);
00308
00320
template <
typename T>
00321
SmartPtr<T> getDefaultComponentSmartPtr(
const char* idlType);
00322
00330
virtual maci::ComponentInfo
getComponentDescriptor(
const char* componentName)=0;
00331
00346
virtual ACE_CString_Vector findComponents(
const char *nameWilcard,
const char *typeWildcard)=0;
00347
00358
virtual void releaseComponent(
const char *name)=0;
00359
00365
virtual void releaseAllComponents()=0;
00366
00376
virtual CDB::DAL_ptr
getCDB()=0;
00377
00381
virtual PortableServer::POA_var
getOffShootPOA()=0;
00382
00392
virtual ACS::OffShoot_ptr
activateOffShoot(PortableServer::Servant cbServant)=0;
00393
00400
virtual void deactivateOffShoot(PortableServer::Servant cbServant)=0;
00401
00406
virtual PortableServer::POA_var
createOffShootPOA()=0;
00407
00421
virtual ComponentStateManager*
getComponentStateManager()=0;
00422
00432 virtual ACS::ThreadManager*
getThreadManager(){
return &
threadManager_m; }
00433
00434
protected:
00435 ACE_CString
m_componentName;
00436
00437 ComponentListener*
compListener;
00438 bool withCompListener;
00443 PortableServer::POA_var
m_poa;
00444
00448
00449 ACS::ThreadManager threadManager_m;
00450
00451 };
00452
00453 };
00454
00455
00456
#include "acsContainerServices.i"
00457
00458
00459
00460
#endif // acsContainerServices_h