summaryrefslogtreecommitdiff
path: root/cpp/include
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/include')
-rw-r--r--cpp/include/Glacier2/Application.h4
-rw-r--r--cpp/include/Ice/Application.h53
-rw-r--r--cpp/include/Ice/Initialize.h106
-rw-r--r--cpp/include/Ice/Service.h25
4 files changed, 117 insertions, 71 deletions
diff --git a/cpp/include/Glacier2/Application.h b/cpp/include/Glacier2/Application.h
index 96c06e6c07b..7d2f57b8dc5 100644
--- a/cpp/include/Glacier2/Application.h
+++ b/cpp/include/Glacier2/Application.h
@@ -194,11 +194,11 @@ public:
protected:
- virtual int doMain(int, char*[], const Ice::InitializationData& initData);
+ virtual int doMain(int, char*[], const Ice::InitializationData& initData, int);
private:
- bool doMain(Ice::StringSeq&, const Ice::InitializationData&, int&);
+ bool doMain(Ice::StringSeq&, const Ice::InitializationData&, int&, int);
/**
* Run should not be overridden for Glacier2.Application. Instead
diff --git a/cpp/include/Ice/Application.h b/cpp/include/Ice/Application.h
index 379542896d3..0df20b71a25 100644
--- a/cpp/include/Ice/Application.h
+++ b/cpp/include/Ice/Application.h
@@ -31,30 +31,29 @@ public:
Application(SignalPolicy = ICE_ENUM(SignalPolicy, HandleSignals));
virtual ~Application();
- //
// This main() must be called by the global main(). main()
- // initializes the Communicator, calls run() as a template method,
- // and destroys the Communicator upon return from run(). It
- // thereby handles all exceptions properly, i.e., error messages
- // are printed if exceptions propagate to main(), and the
- // Communicator is always destroyed, regardless of exceptions.
+ // initializes the Communicator, calls run() and destroys the
+ // the Communicator upon return from run(). It handles all
+ // exceptions properly, i.e., error message are printed if
+ // exceptions propagate to main(), and the Communicator is always
+ // destroyed, regardless of exceptions.
//
- int main(int, char*[], const Ice::InitializationData& = Ice::InitializationData());
- int main(int, char*[], const char*);
-
- int main(int, char* const [], const Ice::InitializationData& = Ice::InitializationData());
- int main(int, char* const [], const char*);
+ int main(int, const char* const[], const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
+ int main(int, const char* const[], ICE_CONFIG_FILE_STRING, int = ICE_INT_VERSION);
-#ifdef _WIN32
+# ifdef _WIN32
+ int main(int, const wchar_t* const[], const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
+ int main(int, const wchar_t* const[], ICE_CONFIG_FILE_STRING, int = ICE_INT_VERSION);
+# endif
- int main(int, wchar_t*[], const Ice::InitializationData& = Ice::InitializationData());
- int main(int, wchar_t*[], const char*);
-
-#endif
-
- int main(const StringSeq&, const Ice::InitializationData& = Ice::InitializationData());
- int main(const StringSeq&, const char*);
+ int main(const StringSeq&, const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
+ int main(const StringSeq&, ICE_CONFIG_FILE_STRING, int = ICE_INT_VERSION);
+ //
+ // run is given a copy of the remaining argc/argv arguments,
+ // after the communicator initialization in the caller (main)
+ // has removed all Ice-related arguments.
+ //
virtual int run(int, char*[]) = 0;
//
@@ -114,7 +113,7 @@ public:
protected:
- virtual int doMain(int, char*[], const Ice::InitializationData&);
+ virtual int doMain(int, char*[], const InitializationData&, Int);
//
// _mutex and _condVar are used to synchronize the main thread and
@@ -124,21 +123,23 @@ protected:
static IceUtil::Cond _condVar;
//
- // Variables than can change while run() and communicator->destroy() are running!
+ // Variables than can change while run() and communicator->destroy()
+ // are running!
//
static bool _callbackInProgress;
static bool _destroyed;
static bool _interrupted;
//
- // Variables that are immutable during run() and until communicator->destroy() has returned;
- // before and after run(), and once communicator->destroy() has returned, we assume that
+ // Variables that are immutable during run() and until
+ // communicator->destroy() has returned, before and after run(), and
+ // once communicator->destroy() has returned, we assume that
// only the main thread and CtrlCHandler threads are running.
//
static std::string _appName;
- static Ice::CommunicatorPtr _communicator;
- static Ice::SignalPolicy _signalPolicy;
- static Ice::Application* _application;
+ static CommunicatorPtr _communicator;
+ static SignalPolicy _signalPolicy;
+ static Application* _application;
private:
diff --git a/cpp/include/Ice/Initialize.h b/cpp/include/Ice/Initialize.h
index 43eb9d28dd1..6d1ff3b7bed 100644
--- a/cpp/include/Ice/Initialize.h
+++ b/cpp/include/Ice/Initialize.h
@@ -23,15 +23,19 @@
#include <Ice/Plugin.h>
#include <Ice/BatchRequestInterceptor.h>
+#ifdef ICE_CPP11_MAPPING
+# define ICE_CONFIG_FILE_STRING const std::string&
+#else
+# define ICE_CONFIG_FILE_STRING const char*
+#endif
+
namespace Ice
{
-ICE_API StringSeq argsToStringSeq(int, char*[]);
+ICE_API StringSeq argsToStringSeq(int, const char* const[]);
#ifdef _WIN32
-
-ICE_API StringSeq argsToStringSeq(int, wchar_t*[]);
-
+ICE_API StringSeq argsToStringSeq(int, const wchar_t* const[]);
#endif
//
@@ -40,22 +44,34 @@ ICE_API StringSeq argsToStringSeq(int, wchar_t*[]);
// the argument vector elements so that the vector matches the
// contents of the sequence.
//
-ICE_API void stringSeqToArgs(const StringSeq&, int&, char*[]);
+ICE_API void stringSeqToArgs(const StringSeq&, int&, const char*[]);
+inline void stringSeqToArgs(const StringSeq& seq, int& argc, char* argv[])
+{
+ return stringSeqToArgs(seq, argc, const_cast<const char**>(argv));
+}
#ifdef _WIN32
-
-ICE_API void stringSeqToArgs(const StringSeq&, int&, wchar_t*[]);
-
+ICE_API void stringSeqToArgs(const StringSeq&, int&, const wchar_t*[]);
+inline void stringSeqToArgs(const StringSeq& seq, int& argc, wchar_t* argv[])
+{
+ return stringSeqToArgs(seq, argc, const_cast<const wchar_t**>(argv));
+}
#endif
ICE_API PropertiesPtr createProperties();
ICE_API PropertiesPtr createProperties(StringSeq&, const PropertiesPtr& = 0);
-ICE_API PropertiesPtr createProperties(int&, char*[], const PropertiesPtr& = 0);
+ICE_API PropertiesPtr createProperties(int&, const char*[], const PropertiesPtr& = 0);
+inline PropertiesPtr createProperties(int& argc, char* argv[], const PropertiesPtr& props = 0)
+{
+ return createProperties(argc, const_cast<const char**>(argv), props);
+}
#ifdef _WIN32
-
-ICE_API PropertiesPtr createProperties(int&, wchar_t*[], const PropertiesPtr& = 0);
-
+ICE_API PropertiesPtr createProperties(int&, const wchar_t*[], const PropertiesPtr& = 0);
+inline PropertiesPtr createProperties(int& argc, wchar_t* argv[], const PropertiesPtr& props = 0)
+{
+ return createProperties(argc, const_cast<const wchar_t**>(argv), props);
+}
#endif
//
@@ -113,19 +129,49 @@ struct InitializationData
ValueFactoryManagerPtr valueFactoryManager;
};
-ICE_API CommunicatorPtr initialize(int&, char*[], const InitializationData& = InitializationData(),
- Int = ICE_INT_VERSION);
+ICE_API CommunicatorPtr initialize(int&, const char*[], const InitializationData& = InitializationData(),
+ int = ICE_INT_VERSION);
+inline CommunicatorPtr initialize(int& argc, char* argv[], const InitializationData& initData = InitializationData(),
+ int version = ICE_INT_VERSION)
+{
+ return initialize(argc, const_cast<const char**>(argv), initData, version);
+}
+
+
+ICE_API CommunicatorPtr initialize(int&, const char*[], ICE_CONFIG_FILE_STRING, int = ICE_INT_VERSION);
+inline CommunicatorPtr initialize(int& argc, char* argv[], ICE_CONFIG_FILE_STRING configFile,
+ int version = ICE_INT_VERSION)
+{
+ return initialize(argc, const_cast<const char**>(argv), configFile, version);
+}
#ifdef _WIN32
-ICE_API CommunicatorPtr initialize(int&, wchar_t*[], const InitializationData& = InitializationData(),
- Int = ICE_INT_VERSION);
+ICE_API CommunicatorPtr initialize(int&, const wchar_t*[], const InitializationData& = InitializationData(),
+ int = ICE_INT_VERSION);
+inline CommunicatorPtr initialize(int& argc, wchar_t* argv[], const InitializationData& initData = InitializationData(),
+ int version = ICE_INT_VERSION)
+{
+ return initialize(argc, const_cast<const wchar_t**>(argv), initData, version);
+}
+
+ICE_API CommunicatorPtr initialize(int&, const wchar_t*[], ICE_CONFIG_FILE_STRING, int = ICE_INT_VERSION);
+inline CommunicatorPtr initialize(int& argc, wchar_t* argv[], ICE_CONFIG_FILE_STRING configFile,
+ int version = ICE_INT_VERSION)
+{
+ return initialize(argc, const_cast<const wchar_t**>(argv), configFile, version);
+}
#endif
-ICE_API CommunicatorPtr initialize(Ice::StringSeq&, const InitializationData& = InitializationData(),
- Int = ICE_INT_VERSION);
+ICE_API CommunicatorPtr initialize(StringSeq&, const InitializationData& = InitializationData(),
+ int = ICE_INT_VERSION);
+
+ICE_API CommunicatorPtr initialize(StringSeq&, ICE_CONFIG_FILE_STRING, int = ICE_INT_VERSION);
ICE_API CommunicatorPtr initialize(const InitializationData& = InitializationData(),
- Int = ICE_INT_VERSION);
+ int = ICE_INT_VERSION);
+
+ICE_API CommunicatorPtr initialize(ICE_CONFIG_FILE_STRING, int = ICE_INT_VERSION);
+
ICE_API LoggerPtr getProcessLogger();
ICE_API void setProcessLogger(const LoggerPtr&);
@@ -161,24 +207,28 @@ public:
CommunicatorHolder(CommunicatorHolder&&) = default;
CommunicatorHolder& operator=(CommunicatorHolder&&) = default;
-#else
+#else // C++98 mapping
//
// Call initialize to create communicator with the provided args
//
-
- CommunicatorHolder(int&, char*[], const InitializationData& = InitializationData(),
- Int = ICE_INT_VERSION);
+ CommunicatorHolder(int&, const char*[], const InitializationData&, int);
+ CommunicatorHolder(int&, char*[], const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
+ CommunicatorHolder(int&, const char*[], const char* configFile, int = ICE_INT_VERSION);
+ CommunicatorHolder(int&, char*[], const char* configFile, int = ICE_INT_VERSION);
#ifdef _WIN32
- CommunicatorHolder(int&, wchar_t*[], const InitializationData& = InitializationData(),
- Int = ICE_INT_VERSION);
+ CommunicatorHolder(int&, const wchar_t*[], const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
+ CommunicatorHolder(int&, wchar_t*[], const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
+ CommunicatorHolder(int&, const wchar_t*[], const char* configFile, int = ICE_INT_VERSION);
+ CommunicatorHolder(int&, wchar_t*[], const char* configFile, int = ICE_INT_VERSION);
#endif
- CommunicatorHolder(Ice::StringSeq&, const InitializationData& = InitializationData(),
- Int = ICE_INT_VERSION);
+ CommunicatorHolder(StringSeq& args, const InitializationData& = InitializationData(),int = ICE_INT_VERSION);
+ CommunicatorHolder(StringSeq& args, const char* configFile, int = ICE_INT_VERSION);
- CommunicatorHolder(const InitializationData& = InitializationData(), Int = ICE_INT_VERSION);
+ CommunicatorHolder(const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
+ CommunicatorHolder(const char* configFile, int = ICE_INT_VERSION);
//
// Adopt communicator
diff --git a/cpp/include/Ice/Service.h b/cpp/include/Ice/Service.h
index 8c0b786cda9..c1c3cd02b5a 100644
--- a/cpp/include/Ice/Service.h
+++ b/cpp/include/Ice/Service.h
@@ -60,16 +60,13 @@ public:
// The return value is an exit status code: EXIT_FAILURE or
// EXIT_SUCCESS.
//
- int main(int&, char*[], const InitializationData& = InitializationData());
- int main(int, char* const [], const Ice::InitializationData& = Ice::InitializationData());
+ int main(int, const char* const[], const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
#ifdef _WIN32
-
- int main(int&, wchar_t*[], const InitializationData& = InitializationData());
-
+ int main(int, const wchar_t* const[], const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
#endif
- int main(StringSeq&, const InitializationData& = InitializationData());
+ int main(const StringSeq&, const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
//
// Returns the communicator created by the service.
@@ -112,12 +109,10 @@ public:
// EXIT_SUCCESS.
//
#ifdef _WIN32
-
- int run(int&, wchar_t*[], const InitializationData& = InitializationData());
-
+ int run(int, const wchar_t* const[], const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
#endif
- int run(int&, char*[], const InitializationData& = InitializationData());
+ int run(int, const char* const[], const InitializationData& = InitializationData(), int = ICE_INT_VERSION);
#ifdef _WIN32
@@ -171,7 +166,7 @@ protected:
//
// Initialize a communicator.
//
- virtual Ice::CommunicatorPtr initializeCommunicator(int&, char*[], const InitializationData&);
+ virtual Ice::CommunicatorPtr initializeCommunicator(int&, char*[], const InitializationData&, int);
//
// Log a system error, which includes a description of the
@@ -225,12 +220,12 @@ private:
bool _nohup;
bool _service;
std::string _name;
-
+
static Service* _instance;
#ifdef _WIN32
- int runService(int, char*[], const InitializationData&);
+ int runService(int, const char* const[], const InitializationData&);
void terminateService(DWORD);
bool waitForServiceState(SC_HANDLE, DWORD, SERVICE_STATUS&);
void showServiceStatus(const std::string&, SERVICE_STATUS&);
@@ -241,12 +236,12 @@ private:
public:
- void serviceMain(int, wchar_t*[]);
+ void serviceMain(int, const wchar_t* const[]);
void control(int);
#else
- int runDaemon(int, char*[], const InitializationData&);
+ int runDaemon(int, char*[], const InitializationData&, int);
bool _changeDirectory;
bool _closeFiles;