Ice 3.7 C++98 API Reference
Loading...
Searching...
No Matches
Application.h
Go to the documentation of this file.
1//
2// Copyright (c) ZeroC, Inc. All rights reserved.
3//
4
5#ifndef ICE_APPLICATION_H
6#define ICE_APPLICATION_H
7
8#include <Ice/Initialize.h>
9#include <IceUtil/Mutex.h>
10#include <IceUtil/Cond.h>
12
13namespace Ice
14{
15
16using IceUtil::CtrlCHandler;
18
19#ifdef ICE_CPP11_MAPPING
23enum class SignalPolicy : unsigned char
24#else
33
40{
41public:
42
49
50#ifdef ICE_CPP11_MAPPING
52 Application(const Application&) = delete;
53 Application& operator=(const Application&) = delete;
55#endif
56
57 virtual ~Application();
58
73 int main(int argc, const char* const argv[], const InitializationData& initData = InitializationData(),
74 int version = ICE_INT_VERSION);
75
90 int main(int argc, const char* const argv[], ICE_CONFIG_FILE_STRING configFile, int version = ICE_INT_VERSION);
91
92#ifdef _WIN32
107 int main(int argc, const wchar_t* const argv[], const InitializationData& initData = InitializationData(),
108 int version = ICE_INT_VERSION);
109
124 int main(int argc, const wchar_t* const argv[], ICE_CONFIG_FILE_STRING configFile, int version = ICE_INT_VERSION);
125#endif
126
140 int main(const StringSeq& args, const InitializationData& initData = InitializationData(),
141 int version = ICE_INT_VERSION);
142
156 int main(const StringSeq& args, ICE_CONFIG_FILE_STRING configFile, int version = ICE_INT_VERSION);
157
166 virtual int run(int argc, char* argv[]) = 0;
167
177 virtual void interruptCallback(int signal);
178
183 static const char* appName();
184
196
201 static void destroyOnInterrupt();
202
207 static void shutdownOnInterrupt();
208
212 static void ignoreInterrupt();
213
218 static void callbackOnInterrupt();
219
224 static void holdInterrupt();
225
229 static void releaseInterrupt();
230
238 static bool interrupted();
239
240protected:
241
245 virtual int doMain(int, char*[], const InitializationData&, Int);
246
251
256
262
267 static bool _destroyed;
268
273 static bool _interrupted;
274
281 static std::string _appName;
282
290
298
306
307private:
308
309 static void holdInterruptCallback(int);
310 static void destroyOnInterruptCallback(int);
311 static void shutdownOnInterruptCallback(int);
312 static void callbackOnInterruptCallback(int);
313
314#ifndef ICE_CPP11_MAPPING
315 //
316 // Not defined, make Application non-copyable
317 //
318 Application(const Application&);
319 Application& operator=(const Application&);
320#endif
321
322};
323
324}
325
326#endif
#define ICE_API
Definition Config.h:197
#define ICE_INT_VERSION
Definition Config.h:272
#define ICE_ENUM(CLASS, ENUMERATOR)
Definition Config.h:378
#define ICE_CONFIG_FILE_STRING
Definition Initialize.h:24
Definition Cond.h:53
Definition Mutex.h:33
virtual int doMain(int, char *[], const InitializationData &, Int)
Helper function that implements the application logic.
static void destroyOnInterrupt()
Configures the application to destroy the communicator when one of the monitored signals is raised.
static CommunicatorPtr _communicator
The application's communicator.
Definition Application.h:289
Application(SignalPolicy policy=HandleSignals)
The constructor configures the signal handling behavior.
int main(const StringSeq &args, const InitializationData &initData=InitializationData(), int version=30711)
Call this main() from the global main().
int main(const StringSeq &args, const char *configFile, int version=30711)
Call this main() from the global main().
virtual void interruptCallback(int signal)
Override this method to provide a custom application interrupt hook.
static Application * _application
The singleton instance.
Definition Application.h:305
static void callbackOnInterrupt()
Configures the application to invoke interruptCallback when a signal occurs, thereby giving the subcl...
virtual int run(int argc, char *argv[])=0
run is given a copy of the remaining argc/argv arguments, after the communicator initialization in th...
static bool _interrupted
True if an interrupt signal was received.
Definition Application.h:273
static CommunicatorPtr communicator()
Obtains the application's Communicator instance.
static IceUtil::Cond _condVar
Used to synchronize the main thread and the CtrlCHandler thread.
Definition Application.h:255
static void releaseInterrupt()
Processes a stored signal (if any) using the current signal handling configuration.
static bool _callbackInProgress
True if a signal handling callback is currently executing.
Definition Application.h:261
int main(int argc, const char *const argv[], const InitializationData &initData=InitializationData(), int version=30711)
Call this main() from the global main().
static void holdInterrupt()
Configures the application to ignore (but remember) a signal.
static bool interrupted()
Indicates whether a signal handler was triggered.
static const char * appName()
Obtains the application name, i.e., argv[0].
static void ignoreInterrupt()
Configures the application to ignore signals.
static IceUtil::Mutex _mutex
Used to synchronize the main thread and the CtrlCHandler thread.
Definition Application.h:250
virtual ~Application()
static void shutdownOnInterrupt()
Configures the application to shut down the communicator when one of the monitored signals is raised.
static bool _destroyed
True if the communicator has been destroyed.
Definition Application.h:267
static std::string _appName
The application's name.
Definition Application.h:281
static SignalPolicy _signalPolicy
The signal-handling policy specified at construction.
Definition Application.h:297
int main(int argc, const char *const argv[], const char *configFile, int version=30711)
Call this main() from the global main().
void(* CtrlCHandlerCallback)(int sig)
Invoked when a signal occurs.
Definition CtrlCHandler.h:27
Definition BuiltinSequences.h:113
::std::vector< ::std::string > StringSeq
A sequence of strings.
Definition BuiltinSequences.h:153
int Int
The mapping for the Slice int type.
Definition Config.h:54
SignalPolicy
Definition Application.h:27
@ NoSignalHandling
Disables signal handling, meaning signals retain their default behavior.
Definition Application.h:31
@ HandleSignals
Enables signal handling.
Definition Application.h:29
::IceInternal::Handle< Communicator > CommunicatorPtr
Definition Communicator.h:608
Encapsulates data to initialize a communicator.
Definition Initialize.h:279