diff options
Diffstat (limited to 'cpp/include')
-rw-r--r-- | cpp/include/Glacier2/Application.h | 4 | ||||
-rw-r--r-- | cpp/include/Ice/Application.h | 53 | ||||
-rw-r--r-- | cpp/include/Ice/Initialize.h | 106 | ||||
-rw-r--r-- | cpp/include/Ice/Service.h | 25 |
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; |