diff options
Diffstat (limited to 'cpp/src')
69 files changed, 611 insertions, 513 deletions
diff --git a/cpp/src/Freeze/BackgroundSaveEvictorI.h b/cpp/src/Freeze/BackgroundSaveEvictorI.h index a328f1ecb8a..f3af1e6e475 100644 --- a/cpp/src/Freeze/BackgroundSaveEvictorI.h +++ b/cpp/src/Freeze/BackgroundSaveEvictorI.h @@ -15,19 +15,6 @@ namespace Freeze { - -#if defined(_MSC_VER) && (_MSC_VER <= 1200) || defined(__IBMCPP__) - - enum - { - clean = 0, - created = 1, - modified = 2, - destroyed = 3, - dead = 4 - }; - -#else // // Clean object; can become modified or destroyed // @@ -55,9 +42,6 @@ namespace Freeze // static const Ice::Byte dead = 4; -#endif - - class BackgroundSaveEvictorI; struct BackgroundSaveEvictorElement; diff --git a/cpp/src/Freeze/Freeze.rc b/cpp/src/Freeze/Freeze.rc index 16423321cad..87bb7d60a4f 100644 --- a/cpp/src/Freeze/Freeze.rc +++ b/cpp/src/Freeze/Freeze.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Freeze C++ Library\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", INTERNALNAME VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", ORIGINALFILENAME VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/Freeze/MapI.cpp b/cpp/src/Freeze/MapI.cpp index a12ef25b0b8..a94c79e6d5c 100644 --- a/cpp/src/Freeze/MapI.cpp +++ b/cpp/src/Freeze/MapI.cpp @@ -2093,28 +2093,28 @@ Freeze::MapIndexI::secondaryKeyCreate(Db* /*secondary*/, const Dbt* /*dbKey*/, c // Print for the various exception types. // void -Freeze::DeadlockException::ice_print(ostream& out) const +Freeze::DeadlockException::ice_print(std::ostream& out) const { Exception::ice_print(out); out << ":\ndatabase deadlock:\n" << message; } void -Freeze::NotFoundException::ice_print(ostream& out) const +Freeze::NotFoundException::ice_print(std::ostream& out) const { Exception::ice_print(out); out << ":\ndatabase record not found:\n" << message; } void -Freeze::DatabaseException::ice_print(ostream& out) const +Freeze::DatabaseException::ice_print(std::ostream& out) const { Exception::ice_print(out); out << ":\n" << message; } void -Freeze::IndexNotFoundException::ice_print(ostream& out) const +Freeze::IndexNotFoundException::ice_print(std::ostream& out) const { Exception::ice_print(out); out << ":\ncould not find index \"" << indexName << "\" on map \"" << mapName << "\""; diff --git a/cpp/src/FreezeScript/DumpDB.rc b/cpp/src/FreezeScript/DumpDB.rc index 86b833edaab..219a374dbe3 100644 --- a/cpp/src/FreezeScript/DumpDB.rc +++ b/cpp/src/FreezeScript/DumpDB.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Dump Freeze Database\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "dumpdb\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "dumpdb.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/FreezeScript/TransformDB.rc b/cpp/src/FreezeScript/TransformDB.rc index a3d69395884..9fcc0eff244 100644 --- a/cpp/src/FreezeScript/TransformDB.rc +++ b/cpp/src/FreezeScript/TransformDB.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Transform Freeze Database\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "transformdb\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "transformdb.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/Glacier2/Glacier2Router.rc b/cpp/src/Glacier2/Glacier2Router.rc index e299ec97c24..2d5801f077c 100644 --- a/cpp/src/Glacier2/Glacier2Router.rc +++ b/cpp/src/Glacier2/Glacier2Router.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Glacier2 Router\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "glacier2router\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "glacier2router.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifier.rc b/cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifier.rc index 8bbcad44052..3d7ba3eacc8 100644 --- a/cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifier.rc +++ b/cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifier.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Glacier2CryptPermissionsVerifier C++ Plug-in\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", INTERNALNAME VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", ORIGINALFILENAME VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifierI.cpp b/cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifierI.cpp index 450b2242789..e3387c4667d 100644 --- a/cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifierI.cpp +++ b/cpp/src/Glacier2CryptPermissionsVerifier/CryptPermissionsVerifierI.cpp @@ -14,8 +14,9 @@ #include <IceUtil/FileUtil.h> #include <IceUtil/StringUtil.h> #include <IceUtil/InputUtil.h> +#include <IceUtil/Mutex.h> -#if defined(__GLIBC__) +#if defined(__GLIBC__) || defined(_AIX) # include <crypt.h> #elif defined(__FreeBSD__) # include <unistd.h> @@ -34,9 +35,9 @@ using namespace Glacier2; namespace { - + #if defined(__FreeBSD__) && !defined(__GLIBC__) - + // // FreeBSD crypt is no reentrat we use this global mutex // to serialize access. @@ -74,6 +75,7 @@ public: private: const map<string, string> _passwords; + IceUtil::Mutex _cryptMutex; // for old thread-unsafe crypt() }; class CryptPermissionsVerifierPlugin : public Ice::Plugin @@ -81,12 +83,12 @@ class CryptPermissionsVerifierPlugin : public Ice::Plugin public: CryptPermissionsVerifierPlugin(const CommunicatorPtr&); - + virtual void initialize(); virtual void destroy(); private: - + CommunicatorPtr _communicator; }; @@ -193,7 +195,6 @@ CryptPermissionsVerifierI::checkPermissions(const string& userId, const string& } } # if defined(__GLIBC__) - struct crypt_data data; data.initialized = 0; return p->second == crypt_r(password.c_str(), salt.c_str(), &data); @@ -201,7 +202,7 @@ CryptPermissionsVerifierI::checkPermissions(const string& userId, const string& IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(_staticMutex); return p->second == crypt(password.c_str(), salt.c_str()) # endif -#elif defined(__APPLE__) || defined(_WIN32) +#elif defined(__APPLE__) || defined(_WIN32) // // Pbkdf2 string format: // @@ -210,7 +211,7 @@ CryptPermissionsVerifierI::checkPermissions(const string& userId, const string& // size_t beg = 0; size_t end = 0; - + // // Determine the digest algorithm // @@ -409,7 +410,7 @@ CryptPermissionsVerifierI::checkPermissions(const string& userId, const string& vector<BYTE> passwordBuffer(password.begin(), password.end()); - DWORD status = BCryptDeriveKeyPBKDF2(algorithmHandle, &passwordBuffer[0], + DWORD status = BCryptDeriveKeyPBKDF2(algorithmHandle, &passwordBuffer[0], static_cast<DWORD>(passwordBuffer.size()), &saltBuffer[0], saltLength, rounds, &checksumBuffer1[0], static_cast<DWORD>(checksumLength), 0); @@ -424,7 +425,7 @@ CryptPermissionsVerifierI::checkPermissions(const string& userId, const string& DWORD checksumBuffer2Length = checksumLength; vector<BYTE> checksumBuffer2(checksumLength); - if(!CryptStringToBinary(checksum.c_str(), static_cast<DWORD>(checksum.size()), + if(!CryptStringToBinary(checksum.c_str(), static_cast<DWORD>(checksum.size()), CRYPT_STRING_BASE64, &checksumBuffer2[0], &checksumBuffer2Length, 0, 0)) { @@ -433,7 +434,17 @@ CryptPermissionsVerifierI::checkPermissions(const string& userId, const string& return checksumBuffer1 == checksumBuffer2; # endif #else -# error Password hashing not implemented + // Fallback to plain crypt() - DES-style + + if(p->second.size() != 13) + { + return false; + } + string salt = p->second.substr(0, 2); + + IceUtil::Mutex::Lock lock(_cryptMutex); + return p->second == crypt(password.c_str(), salt.c_str()); + #endif } @@ -448,13 +459,13 @@ CryptPermissionsVerifierPlugin::initialize() { const string prefix = "Glacier2CryptPermissionsVerifier."; const PropertyDict props = _communicator->getProperties()->getPropertiesForPrefix(prefix); - + if(!props.empty()) { ObjectAdapterPtr adapter = _communicator->createObjectAdapter(""); // colloc-only adapter - + // Each prop represents a property to set + the associated password file - + for(PropertyDict::const_iterator p = props.begin(); p != props.end(); ++p) { string name = p->first.substr(prefix.size()); @@ -462,9 +473,9 @@ CryptPermissionsVerifierPlugin::initialize() id.name = IceUtil::generateUUID(); id.category = "Glacier2CryptPermissionsVerifier"; ObjectPrx prx = adapter->add(new CryptPermissionsVerifierI(retrievePasswordMap(p->second)), id); - _communicator->getProperties()->setProperty(name, _communicator->proxyToString(prx)); + _communicator->getProperties()->setProperty(name, _communicator->proxyToString(prx)); } - + adapter->activate(); } } @@ -499,7 +510,7 @@ createCryptPermissionsVerifier(const CommunicatorPtr& communicator, const string out << "Plugin " << name << ": too many arguments"; return 0; } - + return new CryptPermissionsVerifierPlugin(communicator); } diff --git a/cpp/src/Glacier2Lib/Glacier2.rc b/cpp/src/Glacier2Lib/Glacier2.rc index bbbc580825c..b382e90dd67 100644 --- a/cpp/src/Glacier2Lib/Glacier2.rc +++ b/cpp/src/Glacier2Lib/Glacier2.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Glacier2 C++ Client Library\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", INTERNALNAME VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", ORIGINALFILENAME VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/Ice/ConnectionFactory.cpp b/cpp/src/Ice/ConnectionFactory.cpp index d6a5a22e877..f9f329b3c41 100644 --- a/cpp/src/Ice/ConnectionFactory.cpp +++ b/cpp/src/Ice/ConnectionFactory.cpp @@ -835,26 +835,10 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailed(c const LocalException& ex) { assert(_iter != _connectors.end()); - - if(_observer) - { - _observer->failed(ex.ice_name()); - _observer->detach(); - } - - _factory->handleConnectionException(ex, _hasMore || _iter != _connectors.end() - 1); - if(dynamic_cast<const Ice::CommunicatorDestroyedException*>(&ex)) // No need to continue. - { - _factory->finishGetConnection(_connectors, ex, this); - } - else if(++_iter != _connectors.end()) // Try the next connector. + if(connectionStartFailedImpl(ex)) { nextConnector(); } - else - { - _factory->finishGetConnection(_connectors, ex, this); - } } // @@ -979,40 +963,46 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::getConnection() void IceInternal::OutgoingConnectionFactory::ConnectCallback::nextConnector() { - Ice::ConnectionIPtr connection; - try + while(true) { - - const CommunicatorObserverPtr& obsv = _factory->_instance->initializationData().observer; - if(obsv) + try { - _observer = obsv->getConnectionEstablishmentObserver(_iter->endpoint, _iter->connector->toString()); - if(_observer) + const CommunicatorObserverPtr& obsv = _factory->_instance->initializationData().observer; + if(obsv) { - _observer->attach(); + _observer = obsv->getConnectionEstablishmentObserver(_iter->endpoint, _iter->connector->toString()); + if(_observer) + { + _observer->attach(); + } } - } - assert(_iter != _connectors.end()); + assert(_iter != _connectors.end()); - if(_instance->traceLevels()->network >= 2) - { - Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat); - out << "trying to establish " << _iter->endpoint->protocol() << " connection to " - << _iter->connector->toString(); + if(_instance->traceLevels()->network >= 2) + { + Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat); + out << "trying to establish " << _iter->endpoint->protocol() << " connection to " + << _iter->connector->toString(); + } + Ice::ConnectionIPtr connection = _factory->createConnection(_iter->connector->connect(), *_iter); + connection->start(this); } - connection = _factory->createConnection(_iter->connector->connect(), *_iter); - connection->start(this); - } - catch(const Ice::LocalException& ex) - { - if(_instance->traceLevels()->network >= 2) + catch(const Ice::LocalException& ex) { - Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat); - out << "failed to establish " << _iter->endpoint->protocol() << " connection to " - << _iter->connector->toString() << "\n" << ex; + if(_instance->traceLevels()->network >= 2) + { + Trace out(_instance->initializationData().logger, _instance->traceLevels()->networkCat); + out << "failed to establish " << _iter->endpoint->protocol() << " connection to " + << _iter->connector->toString() << "\n" << ex; + } + + if(connectionStartFailedImpl(ex)) + { + continue; // More connectors to try, continue. + } } - connectionStartFailed(connection, ex); + break; } } @@ -1071,6 +1061,31 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::operator<(const Connect return this < &rhs; } +bool +IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailedImpl(const Ice::LocalException& ex) +{ + if(_observer) + { + _observer->failed(ex.ice_name()); + _observer->detach(); + } + + _factory->handleConnectionException(ex, _hasMore || _iter != _connectors.end() - 1); + if(dynamic_cast<const Ice::CommunicatorDestroyedException*>(&ex)) // No need to continue. + { + _factory->finishGetConnection(_connectors, ex, this); + } + else if(++_iter != _connectors.end()) // Try the next connector. + { + return true; + } + else + { + _factory->finishGetConnection(_connectors, ex, this); + } + return false; +} + void IceInternal::IncomingConnectionFactory::activate() { diff --git a/cpp/src/Ice/ConnectionFactory.h b/cpp/src/Ice/ConnectionFactory.h index 21b054f7d9f..616d3d9fe4c 100644 --- a/cpp/src/Ice/ConnectionFactory.h +++ b/cpp/src/Ice/ConnectionFactory.h @@ -116,6 +116,8 @@ private: private: + bool connectionStartFailedImpl(const Ice::LocalException&); + const InstancePtr _instance; const OutgoingConnectionFactoryPtr _factory; const std::vector<EndpointIPtr> _endpoints; diff --git a/cpp/src/Ice/Ice.rc b/cpp/src/Ice/Ice.rc index bbbd822a1f1..f8577c30208 100644 --- a/cpp/src/Ice/Ice.rc +++ b/cpp/src/Ice/Ice.rc @@ -2,8 +2,8 @@ #include "EventLoggerMsg.rc" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -24,12 +24,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Ice C++ Core Library\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", INTERNALNAME VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", ORIGINALFILENAME VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp index ed67cfef601..be381b67dda 100644 --- a/cpp/src/Ice/Instance.cpp +++ b/cpp/src/Ice/Instance.cpp @@ -61,7 +61,7 @@ # include <sys/types.h> #endif -#if defined(__linux) || defined(__sun) || defined(__GLIBC__) +#if defined(__linux) || defined(__sun) || defined(_AIX) || defined(__GLIBC__) # include <grp.h> // for initgroups #endif @@ -1230,7 +1230,9 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Initi #endif if(!logfile.empty()) { - _initData.logger = new LoggerI(_initData.properties->getProperty("Ice.ProgramName"), logfile); + _initData.logger = + new LoggerI(_initData.properties->getProperty("Ice.ProgramName"), logfile, true, 0, + _initData.properties->getPropertyAsIntWithDefault("Ice.LogFile.SizeMax", 0)); } else { diff --git a/cpp/src/Ice/LoggerI.cpp b/cpp/src/Ice/LoggerI.cpp index 623ed3403ff..0904b8d3dd9 100644 --- a/cpp/src/Ice/LoggerI.cpp +++ b/cpp/src/Ice/LoggerI.cpp @@ -9,11 +9,11 @@ #include <IceUtil/Time.h> #include <Ice/LoggerI.h> +#include <IceUtil/StringUtil.h> #include <IceUtil/Mutex.h> #include <IceUtil/MutexPtrLock.h> #ifdef _WIN32 -# include <IceUtil/StringUtil.h> # include <IceUtil/ScopedArray.h> #endif @@ -46,17 +46,24 @@ public: Init init; +// +// Timeout in milliseconds after which rename will be attempted +// in case of failures renaming files. That is set to 5 minutes. +// +const IceUtil::Time retryTimeout = IceUtil::Time::seconds(5 * 60); + } Ice::LoggerI::LoggerI(const string& prefix, const string& file, - bool convert, const IceUtil::StringConverterPtr& converter) : + bool convert, const IceUtil::StringConverterPtr& converter, + size_t sizeMax) : _prefix(prefix), _convert(convert), - _converter(converter) + _converter(converter), #if defined(_WIN32) && !defined(ICE_OS_WINRT) - , _consoleConverter(new IceUtil::WindowsStringConverter(GetConsoleOutputCP())) + _consoleConverter(new IceUtil::WindowsStringConverter(GetConsoleOutputCP())), #endif - + _sizeMax(sizeMax) { if(!prefix.empty()) { @@ -71,6 +78,11 @@ Ice::LoggerI::LoggerI(const string& prefix, const string& file, { throw InitializationException(__FILE__, __LINE__, "FileLogger: cannot open " + _file); } + + if(_sizeMax > 0) + { + _out.seekp(0, _out.end); + } } } @@ -144,6 +156,83 @@ Ice::LoggerI::write(const string& message, bool indent) if(_out.is_open()) { + if(_sizeMax > 0) + { + // + // If file size + message size exceeds max size we archive the log file, + // but we do not archive empty files or truncate messages. + // + size_t sz = static_cast<size_t>(_out.tellp()); + if(sz > 0 && sz + message.size() >= _sizeMax && _nextRetry <= IceUtil::Time::now()) + { + string basename = _file; + string ext; + + size_t i = basename.rfind("."); + if(i != string::npos && i + 1 < basename.size()) + { + ext = basename.substr(i + 1); + basename = basename.substr(0, i); + } + _out.close(); + + int id = 0; + string archive; + string date = IceUtil::Time::now().toString("%Y%m%d-%H%M%S"); + while(true) + { + ostringstream s; + s << basename << "-" << date; + if(id > 0) + { + s << "-" << id; + } + if(!ext.empty()) + { + s << "." << ext; + } + if(IceUtilInternal::fileExists(s.str())) + { + id++; + continue; + } + archive = s.str(); + break; + } + + int err = IceUtilInternal::rename(_file, archive); + + _out.open(_file, fstream::out | fstream::app); + + if(err) + { + _nextRetry = IceUtil::Time::now() + retryTimeout; + + // + // We temporarily set the maximum size to 0 to ensure there isn't more rename attempts + // in the nested error call. + // + size_t sizeMax = _sizeMax; + _sizeMax = 0; + sync.release(); + error("FileLogger: cannot rename `" + _file + "'\n" + IceUtilInternal::lastErrorToString()); + sync.acquire(); + _sizeMax = sizeMax; + } + else + { + _nextRetry = IceUtil::Time(); + } + + if(!_out.is_open()) + { + sync.release(); + error("FileLogger: cannot open `" + _file + "':\nlog messages will be sent to stderr"); + write(message, indent); + return; + } + } + } _out << s << endl; } else diff --git a/cpp/src/Ice/LoggerI.h b/cpp/src/Ice/LoggerI.h index 4ff54d73b41..1c516bad393 100644 --- a/cpp/src/Ice/LoggerI.h +++ b/cpp/src/Ice/LoggerI.h @@ -22,7 +22,7 @@ class LoggerI : public Logger public: LoggerI(const std::string&, const std::string&, bool convert = true, - const IceUtil::StringConverterPtr& converter = 0); + const IceUtil::StringConverterPtr& converter = 0, std::size_t sizeMax = 0); ~LoggerI(); virtual void print(const std::string&); @@ -43,7 +43,13 @@ private: IceUtilInternal::ofstream _out; std::string _file; + std::size_t _sizeMax; + // + // In case of a log file rename failure is set to the time in milliseconds + // after which rename could be attempted again. Otherwise is set to zero. + // + IceUtil::Time _nextRetry; #if defined(_WIN32) && !defined(ICE_OS_WINRT) const IceUtil::StringConverterPtr _consoleConverter; #endif diff --git a/cpp/src/Ice/Network.cpp b/cpp/src/Ice/Network.cpp index 84237fbc852..7fa9614379c 100644 --- a/cpp/src/Ice/Network.cpp +++ b/cpp/src/Ice/Network.cpp @@ -1273,7 +1273,6 @@ IceInternal::fdToLocalAddress(SOCKET fd, Address& addr) socklen_t len = static_cast<socklen_t>(sizeof(sockaddr_storage)); if(getsockname(fd, &addr.sa, &len) == SOCKET_ERROR) { - closeSocketNoThrow(fd); SocketException ex(__FILE__, __LINE__); ex.error = getSocketErrno(); throw ex; @@ -1307,7 +1306,6 @@ IceInternal::fdToRemoteAddress(SOCKET fd, Address& addr) } else { - closeSocketNoThrow(fd); SocketException ex(__FILE__, __LINE__); ex.error = getSocketErrno(); throw ex; @@ -2326,12 +2324,20 @@ repeatConnect: // port as the server). // Address localAddr; - fdToLocalAddress(fd, localAddr); - if(compareAddress(addr, localAddr) == 0) + try { - ConnectionRefusedException ex(__FILE__, __LINE__); - ex.error = 0; // No appropriate errno - throw ex; + fdToLocalAddress(fd, localAddr); + if(compareAddress(addr, localAddr) == 0) + { + ConnectionRefusedException ex(__FILE__, __LINE__); + ex.error = 0; // No appropriate errno + throw ex; + } + } + catch(const LocalException&) + { + closeSocketNoThrow(fd); + throw; } #endif return true; diff --git a/cpp/src/Ice/PluginManagerI.cpp b/cpp/src/Ice/PluginManagerI.cpp index e424f9c7794..2152d955cbd 100644 --- a/cpp/src/Ice/PluginManagerI.cpp +++ b/cpp/src/Ice/PluginManagerI.cpp @@ -480,6 +480,11 @@ Ice::PluginManagerI::loadPlugin(const string& name, const string& pluginSpec, St ex.reason = out.str(); throw ex; } +#ifdef __IBMCPP__ + // xlC warns when casting a void* to function pointer +#pragma report(disable, "1540-0216") +#endif + factory = reinterpret_cast<PLUGIN_FACTORY>(sym); } diff --git a/cpp/src/Ice/PropertyNames.cpp b/cpp/src/Ice/PropertyNames.cpp index 9ce120d99b8..69f03cade5f 100644 --- a/cpp/src/Ice/PropertyNames.cpp +++ b/cpp/src/Ice/PropertyNames.cpp @@ -6,7 +6,7 @@ // ICE_LICENSE file included in this distribution. // // ********************************************************************** -// Generated by makeprops.py from file ./config/PropertyNames.xml, Tue Apr 28 22:03:41 2015 +// Generated by makeprops.py from file ./config/PropertyNames.xml, Thu Apr 7 10:23:17 2016 // IMPORTANT: Do not edit this file -- any edits made here will be lost! @@ -123,6 +123,7 @@ const IceInternal::Property IcePropsData[] = IceInternal::Property("Ice.IPv4", false, 0), IceInternal::Property("Ice.IPv6", false, 0), IceInternal::Property("Ice.LogFile", false, 0), + IceInternal::Property("Ice.LogFile.SizeMax", false, 0), IceInternal::Property("Ice.LogStdErr.Convert", false, 0), IceInternal::Property("Ice.MessageSizeMax", false, 0), IceInternal::Property("Ice.Nohup", false, 0), diff --git a/cpp/src/Ice/PropertyNames.h b/cpp/src/Ice/PropertyNames.h index c0d5538e51e..d5712c8e2ab 100644 --- a/cpp/src/Ice/PropertyNames.h +++ b/cpp/src/Ice/PropertyNames.h @@ -6,7 +6,7 @@ // ICE_LICENSE file included in this distribution. // // ********************************************************************** -// Generated by makeprops.py from file ./config/PropertyNames.xml, Tue Apr 28 22:03:41 2015 +// Generated by makeprops.py from file ./config/PropertyNames.xml, Thu Apr 7 10:23:17 2016 // IMPORTANT: Do not edit this file -- any edits made here will be lost! diff --git a/cpp/src/Ice/RetryQueue.cpp b/cpp/src/Ice/RetryQueue.cpp index aff3ff67f96..c9513f1710c 100644 --- a/cpp/src/Ice/RetryQueue.cpp +++ b/cpp/src/Ice/RetryQueue.cpp @@ -116,7 +116,7 @@ IceInternal::RetryQueue::destroy() Lock sync(*this); assert(_instance); - set<RetryTaskPtr>::const_iterator p = _requests.begin(); + set<RetryTaskPtr>::iterator p = _requests.begin(); while(p != _requests.end()) { if(_instance->timer()->cancel(*p)) diff --git a/cpp/src/Ice/StreamSocket.cpp b/cpp/src/Ice/StreamSocket.cpp index efbe6c301e5..fa3761f5fa0 100644 --- a/cpp/src/Ice/StreamSocket.cpp +++ b/cpp/src/Ice/StreamSocket.cpp @@ -35,7 +35,15 @@ StreamSocket::StreamSocket(const ProtocolInstancePtr& instance, _state = _proxy ? StateProxyWrite : StateConnected; } #endif - _desc = fdToString(_fd, _proxy, _addr); + try + { + _desc = fdToString(_fd, _proxy, _addr); + } + catch(const Ice::Exception&) + { + closeSocketNoThrow(_fd); + throw; + } } StreamSocket::StreamSocket(const ProtocolInstancePtr& instance, SOCKET fd) : @@ -48,7 +56,15 @@ StreamSocket::StreamSocket(const ProtocolInstancePtr& instance, SOCKET fd) : #endif { init(); - _desc = fdToString(fd); + try + { + _desc = fdToString(fd); + } + catch(const Ice::Exception&) + { + closeSocketNoThrow(fd); + throw; + } } StreamSocket::~StreamSocket() diff --git a/cpp/src/Ice/WSConnector.h b/cpp/src/Ice/WSConnector.h index 17c002a8db0..3c26a06ab45 100644 --- a/cpp/src/Ice/WSConnector.h +++ b/cpp/src/Ice/WSConnector.h @@ -33,12 +33,12 @@ public: virtual bool operator!=(const Connector&) const; virtual bool operator<(const Connector&) const; -private: WSConnector(const ProtocolInstancePtr&, const ConnectorPtr&, const std::string&, int, const std::string&); virtual ~WSConnector(); - friend class WSEndpoint; +private: + const ProtocolInstancePtr _instance; const ConnectorPtr _delegate; const std::string _host; diff --git a/cpp/src/Ice/winrt/StreamTransceiver.cpp b/cpp/src/Ice/winrt/StreamTransceiver.cpp index 410604ad0a1..d81dfa61d36 100644 --- a/cpp/src/Ice/winrt/StreamTransceiver.cpp +++ b/cpp/src/Ice/winrt/StreamTransceiver.cpp @@ -352,7 +352,6 @@ IceInternal::StreamTransceiver::StreamTransceiver(const ProtocolInstancePtr& ins NativeInfo(fd), _instance(instance), _state(connected ? StateConnected : StateNeedConnect), - _desc(connected ? fdToString(_fd) : string()), _verified(false) { StreamSocket^ streamSocket = safe_cast<StreamSocket^>(_fd); @@ -360,6 +359,19 @@ IceInternal::StreamTransceiver::StreamTransceiver(const ProtocolInstancePtr& ins _reader = ref new DataReader(streamSocket->InputStream); _reader->InputStreamOptions = InputStreamOptions::Partial; + if(connected) + { + try + { + _desc = fdToString(_fd); + } + catch(const Ice::Exception&) + { + closeSocketNoThrow(_fd); + throw; + } + } + setTcpBufSize(_fd, _instance); _maxSendPacketSize = streamSocket->Control->OutboundBufferSizeInBytes / 2; diff --git a/cpp/src/IceBox/IceBox.rc b/cpp/src/IceBox/IceBox.rc index 11a7097a184..394ba232d4d 100644 --- a/cpp/src/IceBox/IceBox.rc +++ b/cpp/src/IceBox/IceBox.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IceBox C++ Library\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", INTERNALNAME VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", ORIGINALFILENAME VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IceBox/IceBoxAdmin.rc b/cpp/src/IceBox/IceBoxAdmin.rc index c7dbe72ee13..3bf1d1ddf6b 100644 --- a/cpp/src/IceBox/IceBoxAdmin.rc +++ b/cpp/src/IceBox/IceBoxAdmin.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IceBox Admin\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "iceboxadmin\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "iceboxadmin.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IceBox/IceBoxExe.rc b/cpp/src/IceBox/IceBoxExe.rc index e252ff49023..50a02cf3821 100644 --- a/cpp/src/IceBox/IceBoxExe.rc +++ b/cpp/src/IceBox/IceBoxExe.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IceBox C++ Server\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", INTERNALNAME VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", ORIGINALFILENAME VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IceBox/ServiceManagerI.cpp b/cpp/src/IceBox/ServiceManagerI.cpp index 3f21bcc6e25..695b2bf47c1 100644 --- a/cpp/src/IceBox/ServiceManagerI.cpp +++ b/cpp/src/IceBox/ServiceManagerI.cpp @@ -664,6 +664,11 @@ IceBox::ServiceManagerI::start(const string& service, const string& entryPoint, // // Invoke the factory function. // +#ifdef __IBMCPP__ + // xlC warns when casting a void* to function pointer +# pragma report(disable, "1540-0216") +#endif + SERVICE_FACTORY factory = reinterpret_cast<SERVICE_FACTORY>(sym); try { diff --git a/cpp/src/IceDiscovery/IceDiscovery.rc b/cpp/src/IceDiscovery/IceDiscovery.rc index 47326d80b2c..6c549e2dbad 100755 --- a/cpp/src/IceDiscovery/IceDiscovery.rc +++ b/cpp/src/IceDiscovery/IceDiscovery.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IceDiscovery C++ Plug-in\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", INTERNALNAME VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", ORIGINALFILENAME VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IceGrid/Activator.cpp b/cpp/src/IceGrid/Activator.cpp index d7d6f962974..ac7f7c3d349 100644 --- a/cpp/src/IceGrid/Activator.cpp +++ b/cpp/src/IceGrid/Activator.cpp @@ -37,7 +37,7 @@ #endif #endif -#if defined(__linux) || defined(__sun) || defined(__GLIBC__) +#if defined(__linux) || defined(__sun) || defined(_AIX) || defined(__GLIBC__) # include <grp.h> // for initgroups #endif diff --git a/cpp/src/IceGrid/IceGridAdmin.rc b/cpp/src/IceGrid/IceGridAdmin.rc index 9876d9124ff..62048527836 100644 --- a/cpp/src/IceGrid/IceGridAdmin.rc +++ b/cpp/src/IceGrid/IceGridAdmin.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IceGrid Admin\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "icegridadmin\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "icegridadmin.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IceGrid/IceGridDB.rc b/cpp/src/IceGrid/IceGridDB.rc index 499bed1fb7a..151020205e0 100644 --- a/cpp/src/IceGrid/IceGridDB.rc +++ b/cpp/src/IceGrid/IceGridDB.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IceGridDB\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "icegriddb\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "icegriddb.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IceGrid/IceGridNode.rc b/cpp/src/IceGrid/IceGridNode.rc index 663a59a7331..beaff14b0e3 100644 --- a/cpp/src/IceGrid/IceGridNode.rc +++ b/cpp/src/IceGrid/IceGridNode.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IceGrid Node\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "icegridnode\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "icegridnode.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IceGrid/IceGridRegistry.rc b/cpp/src/IceGrid/IceGridRegistry.rc index 67031ebddb2..9b54aad6791 100644 --- a/cpp/src/IceGrid/IceGridRegistry.rc +++ b/cpp/src/IceGrid/IceGridRegistry.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IceGrid Registry\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "icegridregistry\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "icegridregistry.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IceGrid/Parser.cpp b/cpp/src/IceGrid/Parser.cpp index ea380d6bf9b..cd5aeb55fcf 100644 --- a/cpp/src/IceGrid/Parser.cpp +++ b/cpp/src/IceGrid/Parser.cpp @@ -39,23 +39,23 @@ namespace { const char* _commandsHelp[][3] = { -{ "application", "add", +{ "application", "add", "application add [-n | --no-patch] DESC [TARGET ... ] [NAME=VALUE ... ]\n" " Add application described in DESC. If specified\n" -" the optional targets TARGET will be deployed.\n" +" the optional targets TARGET will be deployed.\n" }, -{ "application", "remove", -"application remove NAME Remove application NAME.\n" +{ "application", "remove", +"application remove NAME Remove application NAME.\n" }, { "application", "describe", -"application describe NAME Describe application NAME.\n" +"application describe NAME Describe application NAME.\n" }, { "application", "diff", "application diff [-s | --servers] DESC [TARGET ... ] [NAME=VALUE ... ]\n" " Print the differences betwen the application\n" -" described in DESC and the current deployment.\n" +" described in DESC and the current deployment.\n" " If -s or --servers is specified, print the\n" -" the list of servers affected by the differences.\n" +" the list of servers affected by the differences.\n" }, { "application", "update", "application update [-n | --no-restart] DESC [TARGET ... ] [NAME=VALUE ... ]\n" @@ -70,35 +70,35 @@ const char* _commandsHelp[][3] = { " will be stopped if necessary.\n" }, { "application", "list", -"application list List all deployed applications.\n" +"application list List all deployed applications.\n" }, -{ "server template", "instantiate", +{ "server template", "instantiate", "server template instantiate APPLICATION NODE TEMPLATE [NAME=VALUE ...]\n" -" Instantiate a server template.\n" +" Instantiate a server template.\n" }, -{ "server template", "describe", -"server template describe APPLICATION TEMPLATE\n" -" Describe application server template TEMPLATE.\n" +{ "server template", "describe", +"server template describe APPLICATION TEMPLATE\n" +" Describe application server template TEMPLATE.\n" }, { "service template", "describe", -"service template describe APPLICATION TEMPLATE\n" -" Describe application service template TEMPLATE.\n" +"service template describe APPLICATION TEMPLATE\n" +" Describe application service template TEMPLATE.\n" }, { "node", "list", -"node list List all registered nodes.\n" +"node list List all registered nodes.\n" }, -{ "node", "describe", -"node describe NAME Show information about node NAME.\n" +{ "node", "describe", +"node describe NAME Show information about node NAME.\n" }, { "node", "ping", -"node ping NAME Ping node NAME.\n" +"node ping NAME Ping node NAME.\n" }, { "node", "load", -"node load NAME Print the load of the node NAME.\n" +"node load NAME Print the load of the node NAME.\n" }, { "node", "sockets", "node sockets [NAME] Print the number of CPU sockets of the\n" -" node NAME or all the nodes if NAME is omitted.\n" +" node NAME or all the nodes if NAME is omitted.\n" }, { "node", "show", "node show [OPTIONS] NAME [log | stderr | stdout]\n" @@ -109,36 +109,36 @@ const char* _commandsHelp[][3] = { " -h N | --head N: Print the first N lines (stderr and stdout only)\n" }, { "node", "shutdown", -"node shutdown NAME Shutdown node NAME.\n" +"node shutdown NAME Shutdown node NAME.\n" }, { "registry", "list", -"registry list List all registered registries.\n" +"registry list List all registered registries.\n" }, { "registry", "describe", -"registry describe NAME Show information about registry NAME.\n" +"registry describe NAME Show information about registry NAME.\n" }, { "registry", "ping", -"registry ping NAME Ping registry NAME.\n" +"registry ping NAME Ping registry NAME.\n" }, { "registry", "show", -"registry show [OPTIONS] NAME [log | stderr | stdout ]\n" -" Show registry NAME Ice log, stderr or stdout.\n" +"registry show [OPTIONS] NAME [log | stderr | stdout ]\n" +" Show registry NAME Ice log, stderr or stdout.\n" " Options:\n" " -f | --follow: Wait for new log or data to be available\n" " -t N | --tail N: Print the last N log messages or lines\n" " -h N | --head N: Print the first N lines (stderr and stdout only)\n" }, { "registry", "shutdown", -"registry shutdown NAME Shutdown registry NAME.\n" +"registry shutdown NAME Shutdown registry NAME.\n" }, { "server", "list", -"server list List all registered servers.\n" +"server list List all registered servers.\n" }, { "server", "remove", -"server remove ID Remove server ID.\n" +"server remove ID Remove server ID.\n" }, -{ "server", "describe", -"server describe ID Describe server ID.\n" +{ "server", "describe", +"server describe ID Describe server ID.\n" }, { "server", "properties", "server properties ID Get the run-time properties of server ID.\n" @@ -147,28 +147,28 @@ const char* _commandsHelp[][3] = { "server property ID NAME Get the run-time property NAME of server ID.\n" }, { "server", "state", -"server state ID Get the state of server ID.\n" +"server state ID Get the state of server ID.\n" }, { "server", "pid", -"server pid ID Get the process id of server ID.\n" +"server pid ID Get the process id of server ID.\n" }, { "server", "start", -"server start ID Start server ID.\n" +"server start ID Start server ID.\n" }, { "server", "stop", -"server stop ID Stop server ID.\n" +"server stop ID Stop server ID.\n" }, { "server", "patch", -"server patch ID Patch server ID.\n" +"server patch ID Patch server ID.\n" }, -{ "server", "signal", -"server signal ID SIGNAL Send SIGNAL (e.g. SIGTERM or 15) to server ID.\n" +{ "server", "signal", +"server signal ID SIGNAL Send SIGNAL (e.g. SIGTERM or 15) to server ID.\n" }, { "server", "stdout", -"server stdout ID MESSAGE Write MESSAGE on server ID's stdout.\n" +"server stdout ID MESSAGE Write MESSAGE on server ID's stdout.\n" }, { "server", "stderr", -"server stderr ID MESSAGE Write MESSAGE on server ID's stderr.\n" +"server stderr ID MESSAGE Write MESSAGE on server ID's stderr.\n" }, { "server", "show", "server show [OPTIONS] ID [log | stderr | stdout | LOGFILE ]\n" @@ -179,11 +179,11 @@ const char* _commandsHelp[][3] = { " -h N | --head N: Print the first N lines (not available for Ice log)\n" }, { "server", "enable", -"server enable ID Enable server ID.\n" +"server enable ID Enable server ID.\n" }, { "server", "disable", "server disable ID Disable server ID (a disabled server can't be\n" -" started on demand or administratively).\n" +" started on demand or administratively).\n" }, { "service", "start", @@ -210,26 +210,26 @@ const char* _commandsHelp[][3] = { }, { "adapter", "list", -"adapter list List all registered adapters.\n" +"adapter list List all registered adapters.\n" }, { "adapter", "endpoints", -"adapter endpoints ID Show the endpoints of adapter or replica group ID.\n" +"adapter endpoints ID Show the endpoints of adapter or replica group ID.\n" }, { "adapter", "remove", -"adapter remove ID Remove adapter or replica group ID.\n" +"adapter remove ID Remove adapter or replica group ID.\n" }, { "object", "add", "object add PROXY [TYPE] Add an object to the object registry,\n" -" optionally specifying its type.\n" +" optionally specifying its type.\n" }, { "object", "remove", -"object remove IDENTITY Remove an object from the object registry.\n" +"object remove IDENTITY Remove an object from the object registry.\n" }, { "object", "find", -"object find TYPE Find all objects with the type TYPE.\n" +"object find TYPE Find all objects with the type TYPE.\n" }, { "object", "describe", -"object describe EXPR Describe all registered objects whose stringified\n" +"object describe EXPR Describe all registered objects whose stringified\n" " identities match the expression EXPR. A trailing\n" " wildcard is supported in EXPR, for example\n" " \"object describe Ice*\".\n" @@ -238,7 +238,7 @@ const char* _commandsHelp[][3] = { "object list EXPR List all registered objects whose stringified\n" " identities match the expression EXPR. A trailing\n" " wildcard is supported in EXPR, for example\n" -" \"object list Ice*\".\n" +" \"object list Ice*\".\n" }, { 0, 0, 0 } }; @@ -277,9 +277,9 @@ string toConsoleEncoding(const string& s) // Convert from UTF-8 to console CP string consoleString; windowsConsoleConverter->fromUTF8(reinterpret_cast<const IceUtil::Byte*>(s.data()), - reinterpret_cast<const IceUtil::Byte*>(s.data() + s.size()), + reinterpret_cast<const IceUtil::Byte*>(s.data() + s.size()), consoleString); - + return consoleString; } catch(const IceUtil::IllegalConversionException&) @@ -331,7 +331,7 @@ void writeMessage(const string& message, bool indent) ++idx; } } - + outputString(s); outputNewline(); flushOutput(); @@ -347,7 +347,7 @@ void printLogMessage(const string& p, const Ice::LogMessage& logMessage) } string timestamp = IceUtil::Time::microSeconds(logMessage.timestamp).toDateTime(); - + switch(logMessage.type) { case Ice::PrintMessage: @@ -386,14 +386,14 @@ void printLogMessage(const string& p, const Ice::LogMessage& logMessage) class RemoteLoggerI : public Ice::RemoteLogger -{ +{ public: RemoteLoggerI(); virtual void init(const string&, const Ice::LogMessageSeq&, const Ice::Current&); virtual void log(const Ice::LogMessage&, const Ice::Current&); - + void destroy(); private: @@ -414,23 +414,23 @@ RemoteLoggerI::RemoteLoggerI() : void RemoteLoggerI::init(const string& prefix, const Ice::LogMessageSeq& logMessages, const Ice::Current&) -{ +{ IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); if(!_destroyed) { _prefix = prefix; - + for(Ice::LogMessageSeq::const_iterator p = logMessages.begin(); p != logMessages.end(); ++p) { printLogMessage(_prefix, *p); } - + _initDone = true; _monitor.notifyAll(); } } -void +void RemoteLoggerI::log(const Ice::LogMessage& logMessage, const Ice::Current&) { IceUtil::Monitor<IceUtil::Mutex>::Lock lock(_monitor); @@ -468,7 +468,7 @@ Parser::createParser(const CommunicatorPtr& communicator, const AdminSessionPrx& return new Parser(communicator, session, admin, interactive); } -void +void Parser::usage(const string& category, const string& command) { if(_helpCommands.find(category) == _helpCommands.end()) @@ -496,7 +496,7 @@ Parser::usage(const string& category, const list<string>& args) { invalidCommand("`help' requires at most 1 argument"); } - else + else { usage(category, *args.begin()); } @@ -513,15 +513,15 @@ Parser::usage() "\n" "List of help categories:\n" "\n" - " application: commands to manage applications\n" - " node: commands to manage nodes\n" - " registry: commands to manage registries\n" - " server: commands to manage servers\n" + " application: commands to manage applications\n" + " node: commands to manage nodes\n" + " registry: commands to manage registries\n" + " server: commands to manage servers\n" " service: commands to manage services\n" - " adapter: commands to manage adapters\n" + " adapter: commands to manage adapters\n" " object: commands to manage objects\n" - " server template: commands to manage server templates\n" - " service template: commands to manage service templates\n" + " server template: commands to manage server templates\n" + " service template: commands to manage service templates\n" "\n"; } @@ -565,7 +565,7 @@ Parser::addApplication(const list<string>& origArgs) { list<string> copyArgs = origArgs; copyArgs.push_front("icegridadmin"); - + IceUtilInternal::Options opts; opts.addOpt("n", "no-patch"); vector<string> args; @@ -615,7 +615,7 @@ Parser::addApplication(const list<string>& origArgs) // ApplicationDescriptor app = DescriptorParser::parseDescriptor(desc, targets, vars, _communicator, _admin); _admin->addApplication(app); - + if(!opts.isSet("no-patch")) { // @@ -743,7 +743,7 @@ Parser::diffApplication(const list<string>& origArgs) ApplicationHelper newAppHelper(_communicator, newApp); ApplicationHelper oldAppHelper(_communicator, origApp.descriptor); - + ostringstream os; Output out(os); if(opts.isSet("servers")) @@ -796,7 +796,7 @@ Parser::diffApplication(const list<string>& origArgs) newAppHelper.printDiff(out, oldAppHelper); } out << nl; - outputString(os.str()); + outputString(os.str()); } catch(const Ice::Exception& ex) { @@ -879,7 +879,7 @@ Parser::patchApplication(const list<string>& origArgs) { list<string> copyArgs = origArgs; copyArgs.push_front("icegridadmin"); - + IceUtilInternal::Options opts; opts.addOpt("f", "force"); vector<string> args; @@ -954,7 +954,7 @@ Parser::describeServerTemplate(const list<string>& args) string templ = *p++; ApplicationInfo application = _admin->getApplicationInfo(name); - + ostringstream os; Output out(os); TemplateDescriptorDict::const_iterator q = application.descriptor.serverTemplates.find(templ); @@ -1045,7 +1045,7 @@ Parser::describeServiceTemplate(const list<string>& args) string templ = *p++; ApplicationInfo application = _admin->getApplicationInfo(name); - + ostringstream os; Output out(os); TemplateDescriptorDict::const_iterator q = application.descriptor.serviceTemplates.find(templ); @@ -1382,7 +1382,7 @@ Parser::removeServer(const list<string>& args) catch(const Ice::Exception& ex) { exception(ex); - } + } } void @@ -1533,7 +1533,7 @@ Parser::describeServer(const list<string>& args) invalidCommand("server describe", "requires exactly one argument"); return; } - + try { ServerInfo info = _admin->getServerInfo(args.front()); @@ -1637,7 +1637,7 @@ Parser::pidServer(const list<string>& args) } else { - error("server is not running"); + error("server is not running"); } } catch(const Ice::Exception& ex) @@ -1825,7 +1825,7 @@ Parser::describeService(const list<string>& args) invalidCommand("service describe", "requires exactly two arguments"); return; } - + string server = args.front(); string service = *(++args.begin()); try @@ -1852,7 +1852,7 @@ Parser::describeService(const list<string>& args) } } outputString(os.str()); - + if(!found) { error("couldn't find service `" + service + "'"); @@ -1913,8 +1913,15 @@ Parser::propertiesService(const list<string>& args, bool single) } Ice::ObjectPrx admin = _admin->getServerAdmin(server); - Ice::PropertiesAdminPrx propAdmin = - Ice::PropertiesAdminPrx::uncheckedCast(admin, "IceBox.Service." + service + ".Properties"); + Ice::PropertiesAdminPrx propAdmin; + if(getPropertyAsInt(info.descriptor->propertySet.properties, "IceBox.UseSharedCommunicator." + service) > 0) + { + propAdmin = Ice::PropertiesAdminPrx::uncheckedCast(admin, "IceBox.SharedCommunicator.Properties"); + } + else + { + propAdmin = Ice::PropertiesAdminPrx::uncheckedCast(admin, "IceBox.Service." + service + ".Properties"); + } if(single) { @@ -2116,7 +2123,7 @@ Parser::findObject(const list<string>& args) for(ObjectInfoSeq::const_iterator p = objects.begin(); p != objects.end(); ++p) { cout << _communicator->proxyToString(p->proxy) << endl; - } + } } catch(const Ice::Exception& ex) { @@ -2155,12 +2162,12 @@ Parser::describeObject(const list<string>& args) { objects = _admin->getAllObjectInfos(""); } - + for(ObjectInfoSeq::const_iterator p = objects.begin(); p != objects.end(); ++p) { cout << "proxy = `" << _communicator->proxyToString(p->proxy) << "' type = `" << p->type << "'" << endl; } - + } catch(const Ice::Exception& ex) { @@ -2188,11 +2195,11 @@ Parser::listObject(const list<string>& args) { objects = _admin->getAllObjectInfos(""); } - + for(ObjectInfoSeq::const_iterator p = objects.begin(); p != objects.end(); ++p) { cout << _communicator->identityToString(p->proxy->ice_getIdentity()) << endl; - } + } } catch(const Ice::Exception& ex) { @@ -2205,7 +2212,7 @@ Parser::show(const string& reader, const list<string>& origArgs) { list<string> copyArgs = origArgs; copyArgs.push_front("icegridadmin"); - + IceUtilInternal::Options opts; opts.addOpt("f", "follow"); opts.addOpt("h", "head", IceUtilInternal::Options::NeedArg); @@ -2273,9 +2280,9 @@ Parser::show(const string& reader, const list<string>& origArgs) return; } } - + bool follow = opts.isSet("follow"); - + if(head && follow) { invalidCommand("can't use -f | --follow option with -h | --head option"); @@ -2298,12 +2305,12 @@ Parser::show(const string& reader, const list<string>& origArgs) } void -Parser::showFile(const string& id, const string& reader, const string& filename, +Parser::showFile(const string& id, const string& reader, const string& filename, bool head, bool tail, bool follow, int lineCount) { - + int maxBytes = _communicator->getProperties()->getPropertyAsIntWithDefault("Ice.MessageSizeMax", 1024) * 1024; - + FileIteratorPrx it; try @@ -2355,13 +2362,13 @@ Parser::showFile(const string& id, const string& reader, const string& filename, it = _session->openServerLog(id, filename, tail ? lineCount : -1); } } - + resetInterrupt(); Ice::StringSeq lines; if(head) { assert(!follow); - + int i = 0; bool eof = false; while(!interrupted() && !eof && i < lineCount) @@ -2389,7 +2396,7 @@ Parser::showFile(const string& id, const string& reader, const string& filename, } } } - + if(follow) { while(!interrupted()) @@ -2407,7 +2414,7 @@ Parser::showFile(const string& id, const string& reader, const string& filename, flushOutput(); } } - + if(eof) { Lock sync(*this); @@ -2419,13 +2426,13 @@ Parser::showFile(const string& id, const string& reader, const string& filename, } } } - + if(lines.empty() || !lines.back().empty()) { outputNewline(); flushOutput(); } - + it->destroy(); } catch(...) @@ -2448,7 +2455,7 @@ void Parser::showLog(const string& id, const string& reader, bool tail, bool follow, int lineCount) { outputNewline(); - + Ice::ObjectPrx admin; if(reader == "server") @@ -2469,9 +2476,9 @@ Parser::showLog(const string& id, const string& reader, bool tail, bool follow, error("cannot retrieve Admin proxy for " + reader + " `" + id + "'"); return; } - + Ice::LoggerAdminPrx loggerAdmin; - + try { loggerAdmin = Ice::LoggerAdminPrx::checkedCast(admin, "Logger"); @@ -2479,26 +2486,26 @@ Parser::showLog(const string& id, const string& reader, bool tail, bool follow, catch(const Ice::Exception&) { } - + if(loggerAdmin == 0) { error("cannot retrieve Logger admin facet for " + reader + " `" + id + "'"); return; } - + if(follow) { Ice::ObjectPrx adminCallbackTemplate = _session->getAdminCallbackTemplate(); - + if(adminCallbackTemplate == 0) { error("cannot retriever Callback template from IceGrid registry"); return; } - - const Ice::EndpointSeq endpoints = adminCallbackTemplate->ice_getEndpoints(); + + const Ice::EndpointSeq endpoints = adminCallbackTemplate->ice_getEndpoints(); string publishedEndpoints; - + for(Ice::EndpointSeq::const_iterator p = endpoints.begin(); p != endpoints.end(); ++p) { if(publishedEndpoints.empty()) @@ -2510,26 +2517,26 @@ Parser::showLog(const string& id, const string& reader, bool tail, bool follow, publishedEndpoints += ":" + (*p)->toString(); } } - + _communicator->getProperties()->setProperty("RemoteLoggerAdapter.PublishedEndpoints", publishedEndpoints); - + Ice::ObjectAdapterPtr adapter = _communicator->createObjectAdapter("RemoteLoggerAdapter"); - + _session->ice_getConnection()->setAdapter(adapter); - + Ice::Identity id; ostringstream name; name << "RemoteLogger-" << loggerCallbackCount++; id.name = name.str(); id.category = adminCallbackTemplate->ice_getIdentity().category; - + RemoteLoggerIPtr servant = new RemoteLoggerI; - Ice::RemoteLoggerPrx prx = + Ice::RemoteLoggerPrx prx = Ice::RemoteLoggerPrx::uncheckedCast(adapter->add(servant, id)); adapter->activate(); - + loggerAdmin->attachRemoteLogger(prx, Ice::LogMessageTypeSeq(), Ice::StringSeq(), tail ? lineCount : -1); - + resetInterrupt(); { Lock lock(*this); @@ -2538,10 +2545,10 @@ Parser::showLog(const string& id, const string& reader, bool tail, bool follow, wait(); } } - + servant->destroy(); adapter->destroy(); - + try { loggerAdmin->detachRemoteLogger(prx); @@ -2554,9 +2561,9 @@ Parser::showLog(const string& id, const string& reader, bool tail, bool follow, else { string prefix; - const Ice::LogMessageSeq logMessages = loggerAdmin->getLog(Ice::LogMessageTypeSeq(), Ice::StringSeq(), + const Ice::LogMessageSeq logMessages = loggerAdmin->getLog(Ice::LogMessageTypeSeq(), Ice::StringSeq(), tail ? lineCount : -1, prefix); - + for(Ice::LogMessageSeq::const_iterator p = logMessages.begin(); p != logMessages.end(); ++p) { printLogMessage(prefix, *p); @@ -2583,7 +2590,7 @@ Parser::showWarranty() } // -// With older flex version <= 2.5.35 YY_INPUT second +// With older flex version <= 2.5.35 YY_INPUT second // paramenter is of type int&, in newer versions it // changes to size_t& // @@ -2669,7 +2676,7 @@ Parser::getInput(char* buf, size_t& result, size_t maxSize) break; } } - + result = line.length(); if(result > maxSize) { @@ -2733,7 +2740,7 @@ Parser::invalidCommand(const list<string>& s) { return; } - + string cat = *s.begin(); if(_helpCommands.find(cat) == _helpCommands.end()) { @@ -2812,7 +2819,7 @@ Parser::error(const char* s) cerr << "error: " #ifdef _WIN32 - << toConsoleEncoding(s) + << toConsoleEncoding(s) #else << s #endif @@ -2831,7 +2838,7 @@ Parser::warning(const char* s) { cerr << "warning: " #ifdef _WIN32 - << toConsoleEncoding(s) + << toConsoleEncoding(s) #else << s #endif @@ -2894,8 +2901,8 @@ Parser::parse(const std::string& commands, bool debug) return status; } -Parser::Parser(const CommunicatorPtr& communicator, - const AdminSessionPrx& session, +Parser::Parser(const CommunicatorPtr& communicator, + const AdminSessionPrx& session, const AdminPrx& admin, bool interactive) : _communicator(communicator), @@ -2960,7 +2967,7 @@ Parser::exception(const Ice::Exception& ex) { ostringstream s; s << ex << ":\n" << ex.reason; - error(s.str()); + error(s.str()); } catch(const PatchException& ex) { diff --git a/cpp/src/IceGridLib/IceGrid.rc b/cpp/src/IceGridLib/IceGrid.rc index f6be3ff9139..65728ae1fb6 100644 --- a/cpp/src/IceGridLib/IceGrid.rc +++ b/cpp/src/IceGridLib/IceGrid.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IceGrid C++ Client Library\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", INTERNALNAME VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", ORIGINALFILENAME VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IceGridLib/PluginFacadeI.cpp b/cpp/src/IceGridLib/PluginFacadeI.cpp index 6bcd4f92358..0b1748a852b 100644 --- a/cpp/src/IceGridLib/PluginFacadeI.cpp +++ b/cpp/src/IceGridLib/PluginFacadeI.cpp @@ -18,7 +18,7 @@ using namespace IceGrid; namespace { -RegistryPluginFacadePtr pluginFacade; +RegistryPluginFacade* pluginFacade = 0; }; @@ -38,5 +38,13 @@ IceGrid::getRegistryPluginFacade() void IceGrid::setRegistryPluginFacade(const RegistryPluginFacadePtr& facade) { - pluginFacade = facade; + if(pluginFacade) + { + pluginFacade->__decRef(); + } + pluginFacade = facade.get(); + if(pluginFacade) + { + pluginFacade->__incRef(); + } } diff --git a/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.rc b/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.rc index 757ae84be78..a6268af65ad 100755 --- a/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.rc +++ b/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IceLocatorDiscovery C++ Plug-in\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", INTERNALNAME VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", ORIGINALFILENAME VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IcePatch2/IcePatch2Calc.rc b/cpp/src/IcePatch2/IcePatch2Calc.rc index 9cb67dc9fde..43b3b6c7367 100644 --- a/cpp/src/IcePatch2/IcePatch2Calc.rc +++ b/cpp/src/IcePatch2/IcePatch2Calc.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IcePatch2 Calc\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "icepatch2calc\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "icepatch2calc.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IcePatch2/IcePatch2Client.rc b/cpp/src/IcePatch2/IcePatch2Client.rc index fcf9ca02c9c..915b27b449b 100644 --- a/cpp/src/IcePatch2/IcePatch2Client.rc +++ b/cpp/src/IcePatch2/IcePatch2Client.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IcePatch2 Client\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "icepatch2client\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "icepatch2client.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IcePatch2/IcePatch2Server.rc b/cpp/src/IcePatch2/IcePatch2Server.rc index 662dbce1656..3ea2d1898c1 100644 --- a/cpp/src/IcePatch2/IcePatch2Server.rc +++ b/cpp/src/IcePatch2/IcePatch2Server.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IcePatch2 Server\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "icepatch2server\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "icepatch2server.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IcePatch2Lib/IcePatch2.rc b/cpp/src/IcePatch2Lib/IcePatch2.rc index 89398fe503d..4e4bc0b69d1 100644 --- a/cpp/src/IcePatch2Lib/IcePatch2.rc +++ b/cpp/src/IcePatch2Lib/IcePatch2.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IcePatch2 Client Library\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", INTERNALNAME VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", ORIGINALFILENAME VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IcePatch2Lib/Makefile b/cpp/src/IcePatch2Lib/Makefile index e8b6d4e5565..4c1f938f0ee 100644 --- a/cpp/src/IcePatch2Lib/Makefile +++ b/cpp/src/IcePatch2Lib/Makefile @@ -27,7 +27,13 @@ SDIR = $(slicedir)/IcePatch2 include $(top_srcdir)/config/Make.rules -CPPFLAGS := -I. -I.. $(CPPFLAGS) $(BZIP2_FLAGS) -Wno-deprecated-declarations +CPPFLAGS := -I. -I.. $(CPPFLAGS) $(BZIP2_FLAGS) + +ifeq ($(GCC_COMPILER),yes) + CPPFLAGS := $(CPPFLAGS) -Wno-deprecated-declarations +endif + + SLICE2CPPFLAGS := --ice --include-dir IcePatch2 --dll-export ICE_PATCH2_API $(SLICE2CPPFLAGS) LINKWITH := $(BZIP2_RPATH_LINK) -lIce -lIceUtil $(BZIP2_LIBS) diff --git a/cpp/src/IceSSL/IceSSL.rc b/cpp/src/IceSSL/IceSSL.rc index 5e91bedd9f2..887344f64c2 100644 --- a/cpp/src/IceSSL/IceSSL.rc +++ b/cpp/src/IceSSL/IceSSL.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IceSSL C++ Plug-in\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", INTERNALNAME VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", ORIGINALFILENAME VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IceStorm/IceStormAdmin.rc b/cpp/src/IceStorm/IceStormAdmin.rc index c66fbf5ac57..7614ab71078 100644 --- a/cpp/src/IceStorm/IceStormAdmin.rc +++ b/cpp/src/IceStorm/IceStormAdmin.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IceStorm Admin\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "icestormadmin\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "icestormadmin.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IceStorm/IceStormDB.rc b/cpp/src/IceStorm/IceStormDB.rc index b9fbd0b228e..7c5d32fbcfd 100644 --- a/cpp/src/IceStorm/IceStormDB.rc +++ b/cpp/src/IceStorm/IceStormDB.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IceStormDB\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "icestormdb\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "icestormdb.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IceStorm/IceStormMigrate.rc b/cpp/src/IceStorm/IceStormMigrate.rc index abe3c68f499..29c235d5bbf 100644 --- a/cpp/src/IceStorm/IceStormMigrate.rc +++ b/cpp/src/IceStorm/IceStormMigrate.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Migration Utility for IceStorm Database\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "icestormmigrate\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "icestormmigrate.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IceStorm/IceStormService.rc b/cpp/src/IceStorm/IceStormService.rc index 1fa6fa16f84..a415a7657bb 100644 --- a/cpp/src/IceStorm/IceStormService.rc +++ b/cpp/src/IceStorm/IceStormService.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IceStorm C++ Service for IceBox\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", INTERNALNAME VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", ORIGINALFILENAME VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IceStormLib/IceStorm.rc b/cpp/src/IceStormLib/IceStorm.rc index 23b2093410c..9405ecb0ca9 100644 --- a/cpp/src/IceStormLib/IceStorm.rc +++ b/cpp/src/IceStormLib/IceStorm.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IceStorm C++ Client Library\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", INTERNALNAME VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", ORIGINALFILENAME VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IceUtil/IceUtil.rc b/cpp/src/IceUtil/IceUtil.rc index 3810f0aa3ea..d9dc5f2bb40 100644 --- a/cpp/src/IceUtil/IceUtil.rc +++ b/cpp/src/IceUtil/IceUtil.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Ice C++ Utility Library\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", INTERNALNAME VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", ORIGINALFILENAME VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/IceUtil/Time.cpp b/cpp/src/IceUtil/Time.cpp index 88073886137..1dbf23e1d72 100644 --- a/cpp/src/IceUtil/Time.cpp +++ b/cpp/src/IceUtil/Time.cpp @@ -247,22 +247,8 @@ IceUtil::Time::toMicroSecondsDouble() const std::string IceUtil::Time::toDateTime() const { - time_t time = static_cast<long>(_usec / 1000000); - - struct tm* t; -#ifdef _WIN32 - t = localtime(&time); -#else - struct tm tr; - localtime_r(&time, &tr); - t = &tr; -#endif - - char buf[32]; - strftime(buf, sizeof(buf), "%x %H:%M:%S", t); - std::ostringstream os; - os << buf << "."; + os << toString("%x %H:%M:%S") << "."; os.fill('0'); os.width(3); os << static_cast<long>(_usec % 1000000 / 1000); @@ -294,6 +280,28 @@ IceUtil::Time::toDuration() const return os.str(); } +std::string +IceUtil::Time::toString(const std::string& format) const +{ + time_t time = static_cast<long>(_usec / 1000000); + + struct tm* t; +#ifdef _WIN32 + t = localtime(&time); +#else + struct tm tr; + localtime_r(&time, &tr); + t = &tr; +#endif + + char buf[32]; + if(strftime(buf, sizeof(buf), format.c_str(), t) == 0) + { + return std::string(); + } + return std::string(buf); +} + Time::Time(Int64 usec) : _usec(usec) { diff --git a/cpp/src/IceXML/IceXML.rc b/cpp/src/IceXML/IceXML.rc index e99c5efafeb..644c1df9e73 100644 --- a/cpp/src/IceXML/IceXML.rc +++ b/cpp/src/IceXML/IceXML.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "IceXML C++ Library\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", INTERNALNAME VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", ORIGINALFILENAME VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/Slice/Python.cpp b/cpp/src/Slice/Python.cpp index 09a17a93b4a..4343456efb2 100644 --- a/cpp/src/Slice/Python.cpp +++ b/cpp/src/Slice/Python.cpp @@ -665,6 +665,10 @@ Slice::Python::compile(int argc, char* argv[]) } FileTracker::instance()->addFile(file); + // + // Python magic comment to set the file encoding, it must be first or second line + // + out << "# -*- coding: utf-8 -*-\n"; printHeader(out); printGeneratedHeader(out, base + ".ice", "#"); // diff --git a/cpp/src/Slice/PythonUtil.cpp b/cpp/src/Slice/PythonUtil.cpp index 2e714214052..0caebc4ef4d 100644 --- a/cpp/src/Slice/PythonUtil.cpp +++ b/cpp/src/Slice/PythonUtil.cpp @@ -518,17 +518,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) // ClassList allBases = p->allBases(); StringList ids; -#if defined(__IBMCPP__) && defined(NDEBUG) -// -// VisualAge C++ 6.0 does not see that ClassDef is a Contained, -// when inlining is on. The code below issues a warning: better -// than an error! -// - transform(allBases.begin(), allBases.end(), back_inserter(ids), - IceUtil::constMemFun<string,ClassDef>(&Contained::scoped)); -#else transform(allBases.begin(), allBases.end(), back_inserter(ids), IceUtil::constMemFun(&Contained::scoped)); -#endif StringList other; other.push_back(scoped); other.push_back("::Ice::Object"); @@ -2291,14 +2281,10 @@ Slice::Python::CodeVisitor::writeDocstring(const string& comment, const string& for(StringVec::const_iterator q = lines.begin(); q != lines.end(); ++q) { - if(q != lines.begin()) - { - _out << nl; - } - _out << *q; + _out << nl << *q; } - _out << "\"\"\""; + _out << nl << "\"\"\""; } void @@ -2314,11 +2300,7 @@ Slice::Python::CodeVisitor::writeDocstring(const string& comment, const DataMemb for(StringVec::const_iterator q = lines.begin(); q != lines.end(); ++q) { - if(q != lines.begin()) - { - _out << nl; - } - _out << *q; + _out << nl << *q; } if(!members.empty()) @@ -2360,7 +2342,7 @@ Slice::Python::CodeVisitor::writeDocstring(const string& comment, const DataMemb } } - _out << "\"\"\""; + _out << nl << "\"\"\""; } void @@ -2376,11 +2358,7 @@ Slice::Python::CodeVisitor::writeDocstring(const string& comment, const Enumerat for(StringVec::const_iterator q = lines.begin(); q != lines.end(); ++q) { - if(q != lines.begin()) - { - _out << nl; - } - _out << *q; + _out << nl << *q; } if(!enums.empty()) @@ -2422,7 +2400,7 @@ Slice::Python::CodeVisitor::writeDocstring(const string& comment, const Enumerat } } - _out << "\"\"\""; + _out << nl << "\"\"\""; } bool @@ -2665,11 +2643,7 @@ Slice::Python::CodeVisitor::writeDocstring(const OperationPtr& op, DocstringMode { for(StringVec::const_iterator q = comment.description.begin(); q != comment.description.end(); ++q) { - if(q != comment.description.begin()) - { - _out << nl; - } - _out << *q; + _out << nl << *q; } } @@ -2798,7 +2772,7 @@ Slice::Python::CodeVisitor::writeDocstring(const OperationPtr& op, DocstringMode _out << nl << r->first << " -- " << r->second; } } - _out << "\"\"\""; + _out << nl << "\"\"\""; } void diff --git a/cpp/src/Slice/RubyUtil.cpp b/cpp/src/Slice/RubyUtil.cpp index 3639a53b185..6364e88133e 100644 --- a/cpp/src/Slice/RubyUtil.cpp +++ b/cpp/src/Slice/RubyUtil.cpp @@ -245,17 +245,7 @@ Slice::Ruby::CodeVisitor::visitClassDefStart(const ClassDefPtr& p) // ClassList allBases = p->allBases(); StringList ids; -#if defined(__IBMCPP__) && defined(NDEBUG) -// -// VisualAge C++ 6.0 does not see that ClassDef is a Contained, -// when inlining is on. The code below issues a warning: better -// than an error! -// - transform(allBases.begin(), allBases.end(), back_inserter(ids), - IceUtil::constMemFun<string,ClassDef>(&Contained::scoped)); -#else transform(allBases.begin(), allBases.end(), back_inserter(ids), IceUtil::constMemFun(&Contained::scoped)); -#endif StringList other; other.push_back(scoped); other.push_back("::Ice::Object"); diff --git a/cpp/src/Slice/Slice.rc b/cpp/src/Slice/Slice.rc index fdf1ed46132..c89c5b383ca 100644 --- a/cpp/src/Slice/Slice.rc +++ b/cpp/src/Slice/Slice.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Slice C++ Library\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", INTERNALNAME VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", ORIGINALFILENAME VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/iceserviceinstall/IceServiceInstall.rc b/cpp/src/iceserviceinstall/IceServiceInstall.rc index eabea615a3b..d31407c2274 100644 --- a/cpp/src/iceserviceinstall/IceServiceInstall.rc +++ b/cpp/src/iceserviceinstall/IceServiceInstall.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Install Ice Services as Windows Services\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "iceserviceinstall\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "iceserviceinstall.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/slice2confluence/Slice2Confluence.rc b/cpp/src/slice2confluence/Slice2Confluence.rc index d111abf9674..1b4dfed0ab8 100644 --- a/cpp/src/slice2confluence/Slice2Confluence.rc +++ b/cpp/src/slice2confluence/Slice2Confluence.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Slice to Confluence Markup Translator\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "slice2confluence\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "slice2confluence.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index 05de885e742..6da3a90e809 100644 --- a/cpp/src/slice2cpp/Gen.cpp +++ b/cpp/src/slice2cpp/Gen.cpp @@ -3088,16 +3088,7 @@ Slice::Gen::ObjectVisitor::visitClassDefStart(const ClassDefPtr& p) ClassList allBases = p->allBases(); StringList ids; -#if defined(__IBMCPP__) && defined(NDEBUG) -// -// VisualAge C++ 6.0 does not see that ClassDef is a Contained, -// when inlining is on. The code below issues a warning: better -// than an error! -// - transform(allBases.begin(), allBases.end(), back_inserter(ids), ::IceUtil::constMemFun<string,ClassDef>(&Contained::scoped)); -#else transform(allBases.begin(), allBases.end(), back_inserter(ids), ::IceUtil::constMemFun(&Contained::scoped)); -#endif StringList other; other.push_back(p->scoped()); other.push_back("::Ice::Object"); @@ -3211,16 +3202,9 @@ Slice::Gen::ObjectVisitor::visitClassDefEnd(const ClassDefPtr& p) if(!allOps.empty()) { StringList allOpNames; -#if defined(__IBMCPP__) && defined(NDEBUG) -// -// See comment for transform above -// - transform(allOps.begin(), allOps.end(), back_inserter(allOpNames), - ::IceUtil::constMemFun<string,Operation>(&Contained::name)); -#else transform(allOps.begin(), allOps.end(), back_inserter(allOpNames), ::IceUtil::constMemFun(&Contained::name)); -#endif + allOpNames.push_back("ice_id"); allOpNames.push_back("ice_ids"); allOpNames.push_back("ice_isA"); diff --git a/cpp/src/slice2cpp/Slice2Cpp.rc b/cpp/src/slice2cpp/Slice2Cpp.rc index 7cbc107d57e..f7c47855132 100644 --- a/cpp/src/slice2cpp/Slice2Cpp.rc +++ b/cpp/src/slice2cpp/Slice2Cpp.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Slice to C++ Translator\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "slice2cpp\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "slice2cpp.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/slice2cs/Gen.cpp b/cpp/src/slice2cs/Gen.cpp index 76ef3049cbc..59c2ccae3ad 100644 --- a/cpp/src/slice2cs/Gen.cpp +++ b/cpp/src/slice2cs/Gen.cpp @@ -714,18 +714,7 @@ Slice::CsVisitor::writeDispatchAndMarshalling(const ClassDefPtr& p, bool stream) StringList ids; ClassList bases = p->bases(); bool hasBaseClass = !bases.empty() && !bases.front()->isInterface(); - -#if defined(__IBMCPP__) && defined(NDEBUG) - // - // VisualAge C++ 6.0 does not see that ClassDef is a Contained, - // when inlining is on. The code below issues a warning: better - // than an error! - // - transform(allBases.begin(), allBases.end(), back_inserter(ids), constMemFun<string,ClassDef>(&Contained::scoped)); -#else transform(allBases.begin(), allBases.end(), back_inserter(ids), constMemFun(&Contained::scoped)); -#endif - StringList other; other.push_back(p->scoped()); other.push_back("::Ice::Object"); @@ -1130,14 +1119,7 @@ Slice::CsVisitor::writeDispatchAndMarshalling(const ClassDefPtr& p, bool stream) if(!allOps.empty() || (!p->isInterface() && !hasBaseClass)) { StringList allOpNames; -#if defined(__IBMCPP__) && defined(NDEBUG) - // - // See comment for transform above - // - transform(allOps.begin(), allOps.end(), back_inserter(allOpNames), constMemFun<string,Operation>(&Contained::name)); -#else transform(allOps.begin(), allOps.end(), back_inserter(allOpNames), constMemFun(&Contained::name)); -#endif allOpNames.push_back("ice_id"); allOpNames.push_back("ice_ids"); allOpNames.push_back("ice_isA"); @@ -6061,16 +6043,7 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p) string scoped = p->scoped(); ClassList allBases = p->allBases(); StringList ids; -#if defined(__IBMCPP__) && defined(NDEBUG) - // - // VisualAge C++ 6.0 does not see that ClassDef is a Contained, - // when inlining is on. The code below issues a warning: better - // than an error! - // - transform(allBases.begin(), allBases.end(), back_inserter(ids), ::IceUtil::constMemFun<string,ClassDef>(&Contained::scoped)); -#else transform(allBases.begin(), allBases.end(), back_inserter(ids), ::IceUtil::constMemFun(&Contained::scoped)); -#endif StringList other; other.push_back(p->scoped()); other.push_back("::Ice::Object"); diff --git a/cpp/src/slice2cs/Slice2Cs.rc b/cpp/src/slice2cs/Slice2Cs.rc index 4b935adc752..174785ed336 100644 --- a/cpp/src/slice2cs/Slice2Cs.rc +++ b/cpp/src/slice2cs/Slice2Cs.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Slice to C# Translator\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "slice2cs\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "slice2cs.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/slice2freeze/Slice2Freeze.rc b/cpp/src/slice2freeze/Slice2Freeze.rc index 0c894708bb1..d90e354140f 100644 --- a/cpp/src/slice2freeze/Slice2Freeze.rc +++ b/cpp/src/slice2freeze/Slice2Freeze.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Slice to Freeze for C++ Translator\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "slice2freeze\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "slice2freeze.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/slice2freezej/Slice2FreezeJ.rc b/cpp/src/slice2freezej/Slice2FreezeJ.rc index bf4ebd81097..8140ddb772b 100644 --- a/cpp/src/slice2freezej/Slice2FreezeJ.rc +++ b/cpp/src/slice2freezej/Slice2FreezeJ.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Slice to Freeze for Java Translator\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "slice2freezej\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "slice2freezej.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/slice2html/Slice2Html.rc b/cpp/src/slice2html/Slice2Html.rc index ced3bb32952..2e833c2e8ab 100644 --- a/cpp/src/slice2html/Slice2Html.rc +++ b/cpp/src/slice2html/Slice2Html.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Slice to HTML Translator\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "slice2html\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "slice2html.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/slice2java/Slice2Java.rc b/cpp/src/slice2java/Slice2Java.rc index ac1a8cde05f..6b1d0209dac 100644 --- a/cpp/src/slice2java/Slice2Java.rc +++ b/cpp/src/slice2java/Slice2Java.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Slice to Java Translator\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "slice2java\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "slice2java.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/slice2js/Gen.cpp b/cpp/src/slice2js/Gen.cpp index 573d0180c67..9e55b8b65f2 100644 --- a/cpp/src/slice2js/Gen.cpp +++ b/cpp/src/slice2js/Gen.cpp @@ -1294,17 +1294,7 @@ Slice::Gen::TypesVisitor::visitClassDefStart(const ClassDefPtr& p) _out << ", undefined"; } -#if defined(__IBMCPP__) && defined(NDEBUG) - // - // VisualAge C++ 6.0 does not see that ClassDef is a Contained, - // when inlining is on. The code below issues a warning: better - // than an error! - // - transform(allBases.begin(), allBases.end(), back_inserter(ids), - ::IceUtil::constMemFun<string,ClassDef>(&Contained::scoped)); -#else transform(allBases.begin(), allBases.end(), back_inserter(ids), ::IceUtil::constMemFun(&Contained::scoped)); -#endif StringList other; other.push_back(scoped); other.push_back("::Ice::Object"); diff --git a/cpp/src/slice2js/Slice2Js.rc b/cpp/src/slice2js/Slice2Js.rc index 855d1667576..dc1c9b05377 100644 --- a/cpp/src/slice2js/Slice2Js.rc +++ b/cpp/src/slice2js/Slice2Js.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Slice to JavaScript Translator\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "slice2js\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "slice2js.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/slice2php/Slice2PHP.rc b/cpp/src/slice2php/Slice2PHP.rc index 9c4f8362217..bcbe9d3048e 100644 --- a/cpp/src/slice2php/Slice2PHP.rc +++ b/cpp/src/slice2php/Slice2PHP.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Slice to PHP Translator\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "slice2php\0" VALUE "LegalCopyright", "\251 2003-2016 ZeroC, Inc.\0" VALUE "OriginalFilename", "slice2php.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" diff --git a/cpp/src/slice2py/Slice2Py.rc b/cpp/src/slice2py/Slice2Py.rc index e6cc7f9f4b9..8be8601392a 100644 --- a/cpp/src/slice2py/Slice2Py.rc +++ b/cpp/src/slice2py/Slice2Py.rc @@ -1,8 +1,8 @@ #include "winver.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,6,2,0 - PRODUCTVERSION 3,6,2,0 + FILEVERSION 3,6,3,0 + PRODUCTVERSION 3,6,3,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -19,12 +19,12 @@ BEGIN BEGIN VALUE "CompanyName", "ZeroC, Inc.\0" VALUE "FileDescription", "Slice To Python Translator\0" - VALUE "FileVersion", "3.6.2\0" + VALUE "FileVersion", "3.6.3\0" VALUE "InternalName", "slice2py\0" VALUE "LegalCopyright", "Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved.\0" VALUE "OriginalFilename", "slice2py.exe\0" VALUE "ProductName", "Ice\0" - VALUE "ProductVersion", "3.6.2\0" + VALUE "ProductVersion", "3.6.3\0" END END BLOCK "VarFileInfo" |