00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00033 #ifndef LIMAL_RUNLEVEL_LSB_SERVICE_HPP
00034 #define LIMAL_RUNLEVEL_LSB_SERVICE_HPP
00035
00036 #include <limal/runlevel/config.h>
00037 #include <limal/runlevel/Service.hpp>
00038 #include <limal/runlevel/Runlevel.hpp>
00039 #include <blocxx/String.hpp>
00040 #include <blocxx/Array.hpp>
00041 #include <blocxx/Map.hpp>
00042
00043
00044
00045 namespace LIMAL_NAMESPACE
00046 {
00047 namespace RUNLEVEL_NAMESPACE
00048 {
00049
00050
00084 typedef blocxx::Int32 LSBExitCode;
00085
00088
00089 const LSBExitCode LSB_RC_SUCCESS = 0;
00090 const LSBExitCode LSB_RC_FAILURE = 1;
00091 const LSBExitCode LSB_RC_INVALID_ARGUMENT = 2;
00092 const LSBExitCode LSB_RC_NOT_IMPLEMENTED = 3;
00093 const LSBExitCode LSB_RC_NOT_ALLOWED = 4;
00094 const LSBExitCode LSB_RC_NOT_INSTALLED = 5;
00095 const LSBExitCode LSB_RC_NOT_CONFIGURED = 6;
00096 const LSBExitCode LSB_RC_NOT_RUNNING = 7;
00097
00098
00101
00102 const LSBExitCode LSB_ST_RUNNING = 0;
00103 const LSBExitCode LSB_ST_DEAD_PID_EXISTS = 1;
00104 const LSBExitCode LSB_ST_DEAD_LOCK_EXISTS = 2;
00105 const LSBExitCode LSB_ST_NOT_RUNNING = 3;
00106 const LSBExitCode LSB_ST_UNKNOWN = 4;
00107
00108
00109
00110 typedef blocxx::Map<blocxx::String, blocxx::String> LSBInitInfo;
00111
00112
00113
00119 class LSBService: public Service
00120 {
00121 public:
00128 LSBService(const blocxx::String &name);
00129
00130
00134 ~LSBService();
00135
00136
00140 bool
00141 isServiceEnabled() const;
00142
00143
00149 bool
00150 isServiceEnabledInRunlevel(Runlevel runlevel) const;
00151
00152
00158 bool enableService() const;
00159
00160
00165 bool disableService() const;
00166
00167
00176 LSBInitInfo
00177 getServiceInitInfo() const;
00178
00179
00188 blocxx::Array<blocxx::String>
00189 getServiceActions() const;
00190
00191
00203 blocxx::Array<blocxx::String>
00204 getDefaultActions() const;
00205
00206
00251 LSBExitCode
00252 executeAction(const blocxx::String &action,
00253 const ServiceCmdArgs &cmdArgs,
00254 blocxx::String &stdOutput,
00255 blocxx::String &errOutput,
00256 const ServiceEnvVars &envVars,
00257 const blocxx::String &stdInput,
00258 int timeoutSecs,
00259 int outputLimit);
00260
00261
00278 LSBExitCode
00279 executeAction(const blocxx::String &action,
00280 const ServiceCmdArgs &cmdArgs);
00281
00282
00297 LSBExitCode
00298 executeAction(const blocxx::String &action);
00299
00300
00309 LSBExitCode
00310 executeAction(const blocxx::String &action,
00311 const ServiceCmdArgs &cmdArgs,
00312 blocxx::String &stdOutput,
00313 blocxx::String &errOutput,
00314 int &execStatus,
00315 const ServiceEnvVars &envVars,
00316 const blocxx::String &stdInput,
00317 int timeoutSecs,
00318 int outputLimit)
00319
00320 ;
00321
00322
00323 protected:
00324 void
00325 addServiceAction(const blocxx::String &action);
00326
00327 private:
00328 blocxx::Array<blocxx::String> m_actions;
00329 };
00330
00331
00332
00333 }
00334 }
00335
00336 #endif // LIMAL_RUNLEVEL_LSB_SERVICE_HPP
00337