diff options
Diffstat (limited to 'cpp/src/Ice/Initialize.cpp')
-rw-r--r-- | cpp/src/Ice/Initialize.cpp | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/cpp/src/Ice/Initialize.cpp b/cpp/src/Ice/Initialize.cpp new file mode 100644 index 00000000000..c2c9aa1740e --- /dev/null +++ b/cpp/src/Ice/Initialize.cpp @@ -0,0 +1,91 @@ +// ********************************************************************** +// +// Copyright (c) 2001 +// MutableRealms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +#include <Ice/CommunicatorI.h> +#include <Ice/PropertiesI.h> +#include <Ice/Initialize.h> + +using namespace std; +using namespace Ice; +using namespace IceInternal; + +CommunicatorPtr +Ice::initialize(int& argc, char* argv[], Int version) +{ +#ifndef ICE_IGNORE_VERSION + if (version != ICE_INT_VERSION) + { + throw VersionMismatchException(__FILE__, __LINE__); + } +#endif + + return new CommunicatorI(getDefaultProperties(argc, argv)); +} + +CommunicatorPtr +Ice::initializeWithProperties(const PropertiesPtr& properties, Int version) +{ +#ifndef ICE_IGNORE_VERSION + if (version != ICE_INT_VERSION) + { + throw VersionMismatchException(__FILE__, __LINE__); + } +#endif + + return new CommunicatorI(properties); +} + +static PropertiesPtr defaultProperties; +class DefaultPropertiesDestroyer +{ +public: + + ~DefaultPropertiesDestroyer() + { + defaultProperties = 0; + } +}; +static DefaultPropertiesDestroyer defaultPropertiesDestroyer; + +PropertiesPtr +Ice::getDefaultProperties(int& argc, char* argv[]) +{ + if (!defaultProperties) + { + defaultProperties = createProperties(argc, argv); + } + return defaultProperties; +} + +PropertiesPtr +Ice::createProperties(int& argc, char* argv[]) +{ + return new PropertiesI(argc, argv); +} + +PropertiesPtr +Ice::createPropertiesFromFile(int& argc, char* argv[], const string& file) +{ + return new PropertiesI(argc, argv, file); +} + +void +Ice::addArgumentPrefix(const std::string& prefix) +{ + PropertiesI::addArgumentPrefix(prefix); +} + +InstancePtr +IceInternal::getInstance(const CommunicatorPtr& communicator) +{ + CommunicatorI* p = dynamic_cast<CommunicatorI*>(communicator.get()); + assert(p); + return p->_instance; +} |