00001
#ifndef _ACS_SERVICES_HANDLER_IMPL_H_
00002
#define _ACS_SERVICES_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
00032
00033
00034
00035
#ifndef __cplusplus
00036
#error This is a C++ include file and cannot be used from plain C
00037
#endif
00038
00039
#include "acsDaemonImpl.h"
00040
#include "acsRequest.h"
00041
#include "acsServiceController.h"
00042
00043
00044 class ServiceDefinitionBuilderImpl :
public POA_acsdaemon::ServiceDefinitionBuilder {
00045
00046 short instance;
00047 ACE_CString
services_definition_xml;
00048
00049 static int definition_builder_count;
00050
00051
public:
00052
00053 ServiceDefinitionBuilderImpl(
short instance_number) :
instance(instance_number),
services_definition_xml(
"") {
00054
if (
definition_builder_count >= 10) {
00055 throw ::ACSErrTypeCommon::NoResourcesExImpl(__FILE__, __LINE__,
00056
"::ServiceDefinitionBuilderImpl::ServiceDefinitionBuilderImpl").getNoResourcesEx();
00057 }
00058
if (instance_number < 0 || instance_number > 10) {
00059 throw ::ACSErrTypeCommon::BadParameterExImpl(__FILE__, __LINE__,
00060
"::ServiceDefinitionBuilderImpl::ServiceDefinitionBuilderImpl").getBadParameterEx();
00061 }
00062
definition_builder_count++;
00063
ACS_SHORT_LOG((LM_DEBUG,
"CREATING ServiceDefinitionBuilderImpl. New count: '%d'!",
definition_builder_count));
00064 };
00065
00066 ~ServiceDefinitionBuilderImpl() {
00067
definition_builder_count--;
00068
ACS_SHORT_LOG((LM_DEBUG,
"DESTROYING ServiceDefinitionBuilderImpl. New count: '%d'!",
definition_builder_count));
00069 };
00070
00071
00072
00073 ::CORBA::Short
acs_instance_number (
00074
void);
00075
00076
void add_naming_service (
00077
const char * host);
00078
00079
void add_notification_service (
00080
const char * name,
00081
const char * host);
00082
00083
void add_xml_cdb (
00084
const char * host,
00085 ::CORBA::Boolean recovery,
00086
const char * cdb_xml_dir);
00087
00088
void add_manager (
00089
const char * host,
00090
const char * domain,
00091 ::CORBA::Boolean recovery);
00092
00093
void add_acs_log (
00094
const char * host);
00095
00096
void add_logging_service (
00097
const char * host,
00098
const char * name);
00099
00100
void add_interface_repository (
00101
const char * host,
00102 ::CORBA::Boolean load,
00103 ::CORBA::Boolean wait_load);
00104
00105
void add_services_definition (
00106
const char * definition);
00107
00108 ::CORBA::Boolean
is_valid (
00109 ::CORBA::String_out error_description);
00110
00111
char *
get_services_definition (
00112
void);
00113
00114
void close (
00115
void);
00116
00117 };
00118
00119 class ACSServicesHandlerImpl :
public POA_acsdaemon::ServicesDaemon {
00120
00121
public:
00122
00126
ACSServicesHandlerImpl();
00127
00131
virtual ~ACSServicesHandlerImpl();
00132
00136 void setService(
ACSDaemonServiceImpl<ACSServicesHandlerImpl> *service)
00137 {
00138
h_service = service;
00139 }
00140
00144
void initialize(CORBA::ORB_ptr orb);
00145
00149
void dispose(CORBA::ORB_ptr orb);
00150
00154 std::string
getName();
00155
00159 std::string
getType();
00160
00164 std::string
getPort();
00165
00169 std::string
getServices(
short instance_number,
bool recovery);
00170
00171
00172
00173 ::acsdaemon::ServiceDefinitionBuilder_ptr
create_service_definition_builder (
00174 ::CORBA::Short instance_number);
00175
00176
void start_services (
00177
const char * definition,
00178 ::CORBA::Boolean reuse_services,
00179 ::acsdaemon::DaemonSequenceCallback_ptr callback
00180 )
00181 ACE_THROW_SPEC ((
00182 ACSErrTypeCommon::BadParameterEx
00183 ));
00184
00185
void stop_services (
00186
const char * definition,
00187 ::acsdaemon::DaemonSequenceCallback_ptr callback
00188 )
00189 ACE_THROW_SPEC ((
00190 ACSErrTypeCommon::BadParameterEx
00191 ));
00192
00193
void start_naming_service (
00194 ::acsdaemon::DaemonCallback_ptr callback,
00195 ::CORBA::Short instance_number
00196 )
00197 ACE_THROW_SPEC ((
00198 ACSErrTypeCommon::BadParameterEx,
00199 acsdaemonErrType::ServiceAlreadyRunningEx
00200 ));
00201
00202
void start_notification_service (
00203
const char * name,
00204 ::acsdaemon::DaemonCallback_ptr callback,
00205 ::CORBA::Short instance_number
00206 )
00207 ACE_THROW_SPEC ((
00208 ACSErrTypeCommon::BadParameterEx,
00209 acsdaemonErrType::ServiceAlreadyRunningEx
00210 ));
00211
00212
void start_xml_cdb (
00213 ::acsdaemon::DaemonCallback_ptr callback,
00214 ::CORBA::Short instance_number,
00215 ::CORBA::Boolean recovery,
00216
const char * cdb_xml_dir
00217 )
00218 ACE_THROW_SPEC ((
00219 ACSErrTypeCommon::BadParameterEx,
00220 acsdaemonErrType::ServiceAlreadyRunningEx
00221 ));
00222
00223
void start_manager (
00224
const char * domain,
00225 ::acsdaemon::DaemonCallback_ptr callback,
00226 ::CORBA::Short instance_number,
00227 ::CORBA::Boolean recovery
00228 )
00229 ACE_THROW_SPEC ((
00230 ACSErrTypeCommon::BadParameterEx,
00231 acsdaemonErrType::ServiceAlreadyRunningEx
00232 ));
00233
00234
void start_acs_log (
00235 ::acsdaemon::DaemonCallback_ptr callback,
00236 ::CORBA::Short instance_number
00237 )
00238 ACE_THROW_SPEC ((
00239 ACSErrTypeCommon::BadParameterEx,
00240 acsdaemonErrType::ServiceAlreadyRunningEx
00241 ));
00242
00243
void start_logging_service (
00244
const char * name,
00245 ::acsdaemon::DaemonCallback_ptr callback,
00246 ::CORBA::Short instance_number
00247 )
00248 ACE_THROW_SPEC ((
00249 ACSErrTypeCommon::BadParameterEx,
00250 acsdaemonErrType::ServiceAlreadyRunningEx
00251 ));
00252
00253
void start_interface_repository (
00254 ::CORBA::Boolean load,
00255 ::CORBA::Boolean wait_load,
00256 ::acsdaemon::DaemonCallback_ptr callback,
00257 ::CORBA::Short instance_number
00258 )
00259 ACE_THROW_SPEC ((
00260 ACSErrTypeCommon::BadParameterEx,
00261 acsdaemonErrType::ServiceAlreadyRunningEx
00262 ));
00263
00264
void stop_naming_service (
00265 ::acsdaemon::DaemonCallback_ptr callback,
00266 ::CORBA::Short instance_number
00267 )
00268 ACE_THROW_SPEC ((
00269 ACSErrTypeCommon::BadParameterEx,
00270 acsdaemonErrType::ServiceNotRunningEx
00271 ));
00272
00273
void stop_notification_service (
00274
const char * name,
00275 ::acsdaemon::DaemonCallback_ptr callback,
00276 ::CORBA::Short instance_number
00277 )
00278 ACE_THROW_SPEC ((
00279 ACSErrTypeCommon::BadParameterEx,
00280 acsdaemonErrType::ServiceNotRunningEx
00281 ));
00282
00283
void stop_cdb (
00284 ::acsdaemon::DaemonCallback_ptr callback,
00285 ::CORBA::Short instance_number
00286 )
00287 ACE_THROW_SPEC ((
00288 ACSErrTypeCommon::BadParameterEx,
00289 acsdaemonErrType::ServiceNotRunningEx
00290 ));
00291
00292
void stop_manager (
00293
const char * domain,
00294 ::acsdaemon::DaemonCallback_ptr callback,
00295 ::CORBA::Short instance_number
00296 )
00297 ACE_THROW_SPEC ((
00298 ACSErrTypeCommon::BadParameterEx,
00299 acsdaemonErrType::ServiceNotRunningEx
00300 ));
00301
00302
void stop_acs_log (
00303 ::acsdaemon::DaemonCallback_ptr callback,
00304 ::CORBA::Short instance_number
00305 )
00306 ACE_THROW_SPEC ((
00307 ACSErrTypeCommon::BadParameterEx,
00308 acsdaemonErrType::ServiceNotRunningEx
00309 ));
00310
00311
void stop_logging_service (
00312
const char * name,
00313 ::acsdaemon::DaemonCallback_ptr callback,
00314 ::CORBA::Short instance_number
00315 )
00316 ACE_THROW_SPEC ((
00317 ACSErrTypeCommon::BadParameterEx,
00318 acsdaemonErrType::ServiceNotRunningEx
00319 ));
00320
00321
void stop_interface_repository (
00322 ::acsdaemon::DaemonCallback_ptr callback,
00323 ::CORBA::Short instance_number
00324 )
00325 ACE_THROW_SPEC ((
00326 ACSErrTypeCommon::BadParameterEx,
00327 acsdaemonErrType::ServiceNotRunningEx
00328 ));
00329
00330
void start_acs (
00331 acsdaemon::DaemonSequenceCallback_ptr callback,
00332 ::CORBA::Short instance_number,
00333
const char * additional_command_line
00334 )
00335 ACE_THROW_SPEC ((
00336 CORBA::SystemException,
00337 ::ACSErrTypeCommon::BadParameterEx
00338 ));
00339
00340
void stop_acs (
00341 acsdaemon::DaemonSequenceCallback_ptr callback,
00342 ::CORBA::Short instance_number,
00343
const char * additional_command_line
00344 )
00345 ACE_THROW_SPEC ((
00346 CORBA::SystemException,
00347 ::ACSErrTypeCommon::BadParameterEx
00348 ));
00349
00350
char *
status_acs (
00351 ::CORBA::Short instance_number
00352 )
00353 ACE_THROW_SPEC ((
00354 CORBA::SystemException,
00355 ::acsdaemonErrType::FailedToGetAcsStatusEx
00356 ));
00357
00358
void shutdown ()
00359 ACE_THROW_SPEC ((
00360 CORBA::SystemException,
00361 ::maciErrType::NoPermissionEx
00362 ));
00363
00364 void set_manager_reference(
00365 const
char * ref
00366 )
00367 ACE_THROW_SPEC ((
00368 CORBA::SystemException
00369 ))
00370 {
00371
if (
context)
00372
context->
setManagerReference(ref);
00373 }
00374
00375
private:
00376 std::string
h_name;
00377 std::string
h_type;
00378 ACSDaemonServiceImpl<ACSServicesHandlerImpl> *
h_service;
00379 ACSDaemonContext *
context;
00380 };
00381
00382
00383
00384
#endif