Ice 3.7 C++11 API Reference
Loading...
Searching...
No Matches
Service.h
Go to the documentation of this file.
1//
2// Copyright (c) ZeroC, Inc. All rights reserved.
3//
4
5#ifndef ICE_SERVICE_H
6#define ICE_SERVICE_H
7
8#include <Ice/Initialize.h>
9#include <Ice/LoggerUtil.h>
10
11#ifdef _WIN32
12# include <winsvc.h>
13#endif
14
15namespace Ice
16{
17
24{
25public:
26
28 virtual ~Service();
29
34 virtual bool shutdown();
35
40 virtual void interrupt();
41
67 int main(int argc, const char* const argv[], const InitializationData& initData = InitializationData(),
68 int version = ICE_INT_VERSION);
69
70#ifdef _WIN32
96 int main(int argc, const wchar_t* const argv[], const InitializationData& initData = InitializationData(),
97 int version = ICE_INT_VERSION);
98#endif
99
124 int main(const StringSeq& args, const InitializationData& initData = InitializationData(),
125 int version = ICE_INT_VERSION);
126
131 Ice::CommunicatorPtr communicator() const;
132
137 static Service* instance();
138
143 bool service() const;
144
151 std::string name() const;
152
158 bool checkSystem() const;
159
160#ifdef _WIN32
176 int run(int argc, const wchar_t* const argv[], const InitializationData& initData = InitializationData(),
177 int version = ICE_INT_VERSION);
178#endif
179
195 int run(int argc, const char* const argv[], const InitializationData& initData = InitializationData(),
196 int version = ICE_INT_VERSION);
197
198#ifdef _WIN32
199
204 void configureService(const std::string& name);
205
207 static void setModuleHandle(HMODULE);
209
210#else
211
227 void configureDaemon(bool changeDirectory, bool closeFiles, const std::string& pidFile);
228
229#endif
230
235 virtual void handleInterrupt(int sig);
236
237protected:
238
247 virtual bool start(int argc, char* argv[], int& status) = 0;
248
253 virtual void waitForShutdown();
254
258 virtual bool stop();
259
269 virtual Ice::CommunicatorPtr initializeCommunicator(int& argc, char* argv[], const InitializationData& initData,
270 int version);
271
277 virtual void syserror(const std::string& msg);
278
283 virtual void error(const std::string& msg);
284
289 virtual void warning(const std::string& msg);
290
295 virtual void trace(const std::string& msg);
296
301 virtual void print(const std::string& msg);
302
307
312
317
322
327
332
337
338private:
339
340 Ice::LoggerPtr _logger;
341 Ice::CommunicatorPtr _communicator;
342 bool _nohup;
343 bool _service;
344 std::string _name;
345
346 static Service* _instance;
347
348#ifdef _WIN32
349
350 int runService(int, const char* const[], const InitializationData&);
351 void terminateService(DWORD);
352 bool waitForServiceState(SC_HANDLE, DWORD, SERVICE_STATUS&);
353 void showServiceStatus(const std::string&, SERVICE_STATUS&);
354
355 SERVICE_STATUS_HANDLE _statusHandle;
356 std::vector<std::string> _serviceArgs;
357 InitializationData _initData;
358
359public:
360
362 void serviceMain(int, const wchar_t* const[]);
363 void control(int);
365
366#else
367
368 int runDaemon(int, char*[], const InitializationData&, int);
369
370 bool _changeDirectory;
371 bool _closeFiles;
372 std::string _pidFile;
373
374#endif
375};
376
377} // End of namespace Ice
378
379#endif
#define ICE_API
Definition Config.h:197
#define ICE_INT_VERSION
Definition Config.h:272
Collects output and flushes it via a logger method.
Definition LoggerUtil.h:106
LoggerOutput< Service, Service *, &Service::print > ServicePrint
Logger utility class for a literal message.
Definition Service.h:336
void enableInterrupt()
Enables the signal handler to invoke interrupt() when a signal occurs.
virtual bool start(int argc, char *argv[], int &status)=0
Prepares a service for execution, including the creation and activation of object adapters and servan...
void disableInterrupt()
Ignore signals.
int main(const StringSeq &args, const InitializationData &initData=InitializationData(), int version=30711)
The primary entry point for services.
virtual Ice::CommunicatorPtr initializeCommunicator(int &argc, char *argv[], const InitializationData &initData, int version)
Initializes a communicator.
virtual void interrupt()
Notify the service about a signal interrupt.
virtual void warning(const std::string &msg)
Logs a warning.
int main(int argc, const char *const argv[], const InitializationData &initData=InitializationData(), int version=30711)
The primary entry point for services.
LoggerOutput< Service, Service *, &Service::trace > ServiceTrace
Logger utility class for a trace message.
Definition Service.h:331
virtual void trace(const std::string &msg)
Logs trace information.
virtual bool shutdown()
Shutdown the service.
virtual void waitForShutdown()
Blocks until the service shuts down.
virtual void print(const std::string &msg)
Logs a literal message.
Ice::CommunicatorPtr communicator() const
Obtains the communicator created by the service.
virtual void syserror(const std::string &msg)
Logs a system error, which includes a description of the current system error code.
LoggerOutput< Service, Service *, &Service::warning > ServiceWarning
Logger utility class for a warning.
Definition Service.h:326
virtual bool stop()
Cleans up resources after shutting down.
int run(int argc, const char *const argv[], const InitializationData &initData=InitializationData(), int version=30711)
Alternative entry point for services that use their own command-line options.
LoggerOutput< Service, Service *, &Service::error > ServiceError
Logger utility class for an error.
Definition Service.h:321
bool service() const
Indicates whether the program is running as a Win32 service or Unix daemon.
LoggerOutput< Service, Service *, &Service::syserror > ServiceSysError
Logger utility class for a system error.
Definition Service.h:316
void configureDaemon(bool changeDirectory, bool closeFiles, const std::string &pidFile)
Configures the program to run as a Unix daemon.
virtual ~Service()
virtual void error(const std::string &msg)
Logs an error.
std::string name() const
Obtains the program name.
virtual void handleInterrupt(int sig)
Invoked by the signal handler when it catches a signal.
static Service * instance()
Obtains the Service singleton.
bool checkSystem() const
Determines whether the operating system supports running the program as a Win32 service or Unix daemo...
Definition BuiltinSequences.h:56
::std::vector<::std::string > StringSeq
A sequence of strings.
Definition BuiltinSequences.h:96
Encapsulates data to initialize a communicator.
Definition Initialize.h:279