Go to the documentation of this file.00001 #ifndef _ACS_CONFIGURATION_DATABASE_IMP_HANDLER_IMPL_H_
00002 #define _ACS_CONFIGURATION_DATABASE_IMP_HANDLER_IMPL_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 "acsImpBaseHandlerImpl.h"
00036 
00037 
00038 class ACSConfigurationDatabaseImpHandlerImpl : public ACSImpBaseHandlerImpl<ACSConfigurationDatabaseImpHandlerImpl>, public POA_acsdaemon::CDBImp {
00039 
00040 public:
00041 
00042     ACSConfigurationDatabaseImpHandlerImpl() : ACSImpBaseHandlerImpl<ACSConfigurationDatabaseImpHandlerImpl>(CDB) {}
00043     
00044     
00045 
00046     void start_xml_cdb (
00047         acsdaemon::DaemonCallback_ptr callback,
00048         CORBA::Short instance_number,
00049         CORBA::Boolean recovery,
00050         const char * cdb_xml_dir
00051       )
00052       ACE_THROW_SPEC ((
00053         ACSErrTypeCommon::BadParameterEx,
00054         acsdaemonErrType::ServiceAlreadyRunningEx
00055       ))
00056     {
00057         if (cdb_xml_dir != NULL && strlen(cdb_xml_dir) == 0) cdb_xml_dir = NULL;
00058         ACS_SHORT_LOG ((LM_INFO, "Starting Configuration Database on Imp (instance %d).", instance_number));
00059         ACSServiceRequestDescription *desc = new ACSServiceRequestDescription(CDB, instance_number);
00060         desc->setRecovery(recovery);
00061         desc->setCdbXMLDir(cdb_xml_dir);
00062         context->processRequest(LOCAL, START_SERVICE, desc, callback);
00063     }
00064 
00065     void stop_cdb (
00066         acsdaemon::DaemonCallback_ptr callback,
00067         CORBA::Short instance_number
00068       )
00069       ACE_THROW_SPEC ((
00070         ACSErrTypeCommon::BadParameterEx,
00071         acsdaemonErrType::ServiceNotRunningEx
00072       ))
00073     {
00074         ACS_SHORT_LOG ((LM_INFO, "Stopping Configuration Database on Imp (instance %d).", instance_number));
00075         ACSServiceRequestDescription *desc = new ACSServiceRequestDescription(CDB, instance_number);
00076         context->processRequest(LOCAL, STOP_SERVICE, desc, callback);
00077     }
00078         
00079     acsdaemon::ServiceState get_service_status(CORBA::Short instance_number)
00080       ACE_THROW_SPEC ((
00081         ACSErrTypeCommon::BadParameterEx
00082       )) {
00083         return context->getACSServiceState(instance_number);
00084     }
00085 
00086 };
00087 
00088 
00089 
00090 #endif