diff options
author | Caleb Tennis <caleb@gentoo.org> | 2008-11-11 14:56:34 +0000 |
---|---|---|
committer | Caleb Tennis <caleb@gentoo.org> | 2008-11-11 14:56:34 +0000 |
commit | 61386544868336bd1912253ed658361524aa12b8 (patch) | |
tree | 402f708f9055687b2b3576d2fc1a9d3823ad2fb2 /dev-cpp | |
parent | Added ~ppc keyword. Closes bug #245839 (diff) | |
download | historical-61386544868336bd1912253ed658361524aa12b8.tar.gz historical-61386544868336bd1912253ed658361524aa12b8.tar.bz2 historical-61386544868336bd1912253ed658361524aa12b8.zip |
rev bump with upstream patchsets since 3.3.0 release
Package-Manager: portage-2.2_rc12/cvs/Linux 2.6.21-gentoo-r1 i686
Diffstat (limited to 'dev-cpp')
-rw-r--r-- | dev-cpp/Ice/ChangeLog | 11 | ||||
-rw-r--r-- | dev-cpp/Ice/Ice-3.3.0-r1.ebuild | 83 | ||||
-rw-r--r-- | dev-cpp/Ice/Manifest | 20 | ||||
-rw-r--r-- | dev-cpp/Ice/files/Ice-3.3.0-p1.patch | 51 | ||||
-rw-r--r-- | dev-cpp/Ice/files/Ice-3.3.0-p3.patch | 17 | ||||
-rw-r--r-- | dev-cpp/Ice/files/Ice-3.3.0-p4.patch | 57 | ||||
-rw-r--r-- | dev-cpp/Ice/files/Ice-3.3.0-p5.patch | 25 | ||||
-rw-r--r-- | dev-cpp/Ice/files/Ice-3.3.0-p6.patch | 41 | ||||
-rw-r--r-- | dev-cpp/Ice/files/Ice-3.3.0-p7.patch | 475 | ||||
-rw-r--r-- | dev-cpp/Ice/files/Ice-3.3.0-p8.patch | 232 |
10 files changed, 1000 insertions, 12 deletions
diff --git a/dev-cpp/Ice/ChangeLog b/dev-cpp/Ice/ChangeLog index ad3440f9f24c..e3888c80d642 100644 --- a/dev-cpp/Ice/ChangeLog +++ b/dev-cpp/Ice/ChangeLog @@ -1,6 +1,15 @@ # ChangeLog for dev-cpp/Ice # Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/dev-cpp/Ice/ChangeLog,v 1.16 2008/08/23 18:28:46 maekke Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-cpp/Ice/ChangeLog,v 1.17 2008/11/11 14:56:33 caleb Exp $ + +*Ice-3.3.0-r1 (11 Nov 2008) + + 11 Nov 2008; Caleb Tennis <caleb@gentoo.org> +files/Ice-3.3.0-p1.patch, + +files/Ice-3.3.0-p3.patch, +files/Ice-3.3.0-p4.patch, + +files/Ice-3.3.0-p5.patch, +files/Ice-3.3.0-p6.patch, + +files/Ice-3.3.0-p7.patch, +files/Ice-3.3.0-p8.patch, + +Ice-3.3.0-r1.ebuild: + rev bump with upstream patchsets since 3.3.0 release 23 Aug 2008; Markus Meier <maekke@gentoo.org> Ice-3.3.0.ebuild: add ~amd64, bug #235186 diff --git a/dev-cpp/Ice/Ice-3.3.0-r1.ebuild b/dev-cpp/Ice/Ice-3.3.0-r1.ebuild new file mode 100644 index 000000000000..ee6f3df3c5b8 --- /dev/null +++ b/dev-cpp/Ice/Ice-3.3.0-r1.ebuild @@ -0,0 +1,83 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-cpp/Ice/Ice-3.3.0-r1.ebuild,v 1.1 2008/11/11 14:56:34 caleb Exp $ + +inherit eutils + +DESCRIPTION="ICE middleware C++ bindings" +HOMEPAGE="http://www.zeroc.com/index.html" +SRC_URI="http://www.zeroc.com/download/Ice/3.3/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="ncurses test debug" + +RDEPEND=">=dev-libs/expat-2.0.1 + >=app-arch/bzip2-1.0.4 + >=dev-libs/openssl-0.9.8g + =sys-libs/db-4.6.21* + =dev-cpp/libmcpp-2.6.4" + +DEPEND="${RDEPEND} + ncurses? ( sys-libs/ncurses sys-libs/readline ) + test? ( >=dev-lang/python-2.4 )" + +S=${WORKDIR}/${P}/cpp + +pkg_setup() { + if built_with_use sys-libs/db nocxx; then + eerror "sys-libs/db must be compiled with C++ support!" + eerror "Remove the 'nocxx' use flag and try again." + die "Fix use flags and re-emerge" + fi +} + +src_unpack() { + unpack ${A} + cd "${S}" + + epatch "${FILESDIR}"/${P}-p1.patch + epatch "${FILESDIR}"/${P}-p3.patch + epatch "${FILESDIR}"/${P}-p4.patch + epatch "${FILESDIR}"/${P}-p5.patch + epatch "${FILESDIR}"/${P}-p6.patch + epatch "${FILESDIR}"/${P}-p7.patch + epatch "${FILESDIR}"/${P}-p8.patch + + epatch "${FILESDIR}"/${P}-Makefile.patch + + MAKE_RULES="${S}/config/Make.rules" + + #if use amd64; then + # sed -i -e "s:^#LP64:LP64:g" "${MAKE_RULES}" \ + # || die "Failed to set lib64 directory" + #fi + + if ! use ncurses; then + sed -i -e "s#^USE_READLINE.*#USE_READLINE ?= yes#g" \ + "${MAKE_RULES}" || die "Failed to set no readline" + fi + + if ! use debug; then + sed -i -e "s:#OPTIMIZE:OPTIMIZE:" \ + "${MAKE_RULES}" || die "Failed to remove debug" + fi + + sed -i -e \ + "s:.*CXXFLAGS[^\+]*\=\s:CXXFLAGS = ${CXXFLAGS} :g" \ + "${MAKE_RULES}.Linux" || die "CXXFLAGS patching failed!" +} + +src_compile() { + emake || die "make failed" +} + +src_install() { + emake DESTDIR="${D}" install || die "Install failed" + cp -dpR "${S}"/../slice "${D}"/usr/share/Ice +} + +src_test() { + emake test || die "Test failed" +} diff --git a/dev-cpp/Ice/Manifest b/dev-cpp/Ice/Manifest index e4d59e48c311..0d9d00af1683 100644 --- a/dev-cpp/Ice/Manifest +++ b/dev-cpp/Ice/Manifest @@ -1,21 +1,19 @@ ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - AUX Ice-3.2.0-Makefile.patch 4072 RMD160 40098fa6142aba0f08b72d1ab2f50426d3c0e1ed SHA1 2e63175980d2b1ee420a37a36e9b8c570285967b SHA256 78b8c20f7491749c7ff3806d6130110c4d7145ed3c17699792910b877783e1d1 AUX Ice-3.2.1-Makefile.patch 4072 RMD160 40098fa6142aba0f08b72d1ab2f50426d3c0e1ed SHA1 2e63175980d2b1ee420a37a36e9b8c570285967b SHA256 78b8c20f7491749c7ff3806d6130110c4d7145ed3c17699792910b877783e1d1 AUX Ice-3.3.0-Makefile.patch 2494 RMD160 e9872d64c716d21865ca6282293e95325d5a6363 SHA1 5dda2d42446647aa2b6411acb0213b759f6deaea SHA256 1fa17c02f5d32aa719995d283fc08bfe9b97b5cb4b7628e8463813f367aba525 +AUX Ice-3.3.0-p1.patch 1303 RMD160 a77a613ff40d7c8dd5e9a896177e358b760f0c85 SHA1 2acc699c1f1a10f4263b6895d2fe7dc570ce9b1f SHA256 c4d386772f81d11459b85a890929e6f6298e961ca4b21d6b12d1a46cca9a34ab +AUX Ice-3.3.0-p3.patch 783 RMD160 e878bead8107b8018c0195b4eadd4e22fdad3671 SHA1 e18927cc44489ae60e759a81940e849b39f9ec48 SHA256 538a83e87a4f38190367d4ff57de5ecae8f2bd31295b59be6d0675d987da40bc +AUX Ice-3.3.0-p4.patch 1873 RMD160 dad8546db515cf032374bedf8516f87a5e024ab3 SHA1 fcce388248ace2794985b8e4ee0412157631d75d SHA256 b187d977b6f4b818282acd473903add27f96265aa20cf4a460aa1955cddaf257 +AUX Ice-3.3.0-p5.patch 1053 RMD160 4b521b59685367a3794fac638d59fa82bd19e416 SHA1 8a0ba56852c06c1782ffc385f0b9bc1f2d0d4157 SHA256 69731d53bd7be5769659301ac58e87556e1adcb7275bc393e5a80b6a71943d41 +AUX Ice-3.3.0-p6.patch 1532 RMD160 36283e9cd29ea6b67456a3ef24668bee232025d7 SHA1 3bcfd02c6fda995f7ec9c11e3973ef0bd09aaf29 SHA256 b6ce0c6b1f7f2d122f7d0354d04ffe521f65aec3f8cb86076d224d5c39a52dbd +AUX Ice-3.3.0-p7.patch 12328 RMD160 0ca62f110595b991a3d50ef94a69a84cc4cc06bb SHA1 9e568e1e5db7e279001b46cc918ef7ae4aeae7bc SHA256 f34164846f7a29bc8064c4ada44ca007ea3facd2486ba4744d5fb441ff1a0082 +AUX Ice-3.3.0-p8.patch 6967 RMD160 8ce27985a084916791845c0c0b9dfa1041a3b2b6 SHA1 44dfd12bffcca3212b7f7d32406d1c0be4b07f0e SHA256 63e8282aaa8781ea5396452a0d05e9ee1cf50db40ffc8523e33504a5e14854bf DIST Ice-3.2.0.tar.gz 2060037 RMD160 b11fc5718f4c86b349bf0ddc15d7cf402720a013 SHA1 e3b91f14f280a2df78ec5bfed2d9c7e97890ea51 SHA256 4698326e39342d2526c8780db996e47d35a09cdc6080be4329980ec5766ce81d DIST Ice-3.2.1.tar.gz 2090576 RMD160 c3394486ba13e94c2491b0dc48dc19c3e7565ecd SHA1 69fc7dbdff81d7d9300b57f6e495914f3c9e5c19 SHA256 bd24cfe0296d81e2b04ea8d97b32a4f13fdd949d0f038f4c7e0922b395075149 DIST Ice-3.3.0.tar.gz 4260675 RMD160 e85b37c93f12d9ae97c6b7b2f64f506fa051e4f8 SHA1 b599c3a4d1d3006b868bf2cbcd8e2a2d4575fb22 SHA256 73330e29799d08605d51b9fc148fdc11eb01b6c55b7e4bf4dcb8fafd98ba7749 EBUILD Ice-3.2.0.ebuild 1597 RMD160 592d5fad927ded4bbef30b6f6a0ad57d2d430357 SHA1 d02550c064d88063f35fe5d54869c60ae9c06393 SHA256 f2e8c96032a6b39095ef67c9fb82b40ee465b584861dfa307d34c45dc1f853f0 EBUILD Ice-3.2.1.ebuild 1609 RMD160 b258a9d434fec08faaea2c357a1625eba76f737d SHA1 d25b901dc258aa2a3af071b9e8a8c68760f043b2 SHA256 46d997436e8c456f5f62b8d76024de51d25e0761ff841fee531ccd352cdcc7eb +EBUILD Ice-3.3.0-r1.ebuild 2011 RMD160 e6e20e6eb6c3268ee1c919592a62fbd343d63da0 SHA1 1f7d9d63e831391c80bd783db66661c0a5320d01 SHA256 42edc86593cac12449796e1385bf14d352ed2306232071af14880e02ca7a44a8 EBUILD Ice-3.3.0.ebuild 1756 RMD160 623fad284cbbe3b5ecdd9b0e408024050b74ec14 SHA1 6b9c0991ab7f4594b1be388b4283014312f9f5ba SHA256 33dff9cf250d7f4f19bb5519751cbd3498b9a3b747a1af11566cff07daee8448 -MISC ChangeLog 4775 RMD160 dd5d568d23dc031b28412148f69b81c7b341bb6a SHA1 b8a81f67205e232dd366aa3dc5bf7b79da554d39 SHA256 e1786d341182ebdf4b2f0dc9783744c11cb679bcd846e9c9dad3d8a73e83eb64 +MISC ChangeLog 5125 RMD160 00e0eecd8677ecc9fcab0bef1af14469c4d6ab7f SHA1 ffd55afa679a813f14d48c604a3bd19a52843d6a SHA256 03b31e1e0951f75f5a24e315c62ed7eb9a611ae4574b0a992ad3dfdf9ab905a8 MISC metadata.xml 339 RMD160 f92a68fdab5aad40e9c173ebd1ed26b5963acf9f SHA1 3dfd85c450884b0fb534b7d54cfb6837dfa5c764 SHA256 dec27f6d803819a7791826c1a98a83a1c21a23df0a3384234ac68abf8b8466a3 ------BEGIN PGP SIGNATURE----- -Version: GnuPG v2.0.9 (GNU/Linux) - -iEYEARECAAYFAkiwVzAACgkQkKaRLQcq0GJehwCffWxFyCDejRVBxe7W00PBDYrm -tAkAnA18E6aj5F3KCt8NCoNlpeQtwpr9 -=BucM ------END PGP SIGNATURE----- diff --git a/dev-cpp/Ice/files/Ice-3.3.0-p1.patch b/dev-cpp/Ice/files/Ice-3.3.0-p1.patch new file mode 100644 index 000000000000..91198baba5f6 --- /dev/null +++ b/dev-cpp/Ice/files/Ice-3.3.0-p1.patch @@ -0,0 +1,51 @@ +diff -c -r -N Ice-3.3.0-orig/cpp/src/Slice/Util.cpp Ice-3.3.0/cpp/src/Slice/Util.cpp +*** Ice-3.3.0-orig/cpp/src/Slice/Util.cpp Tue Jun 24 10:28:04 2008 +--- Ice-3.3.0/cpp/src/Slice/Util.cpp Tue Jun 24 10:44:19 2008 +*************** +*** 49,57 **** + ++pos; + } + } +! if(result[result.size() - 1] == '/') // Remove trailing '/' + { +! result.erase(result.size() - 1); + } + return result; + } +--- 49,65 ---- + ++pos; + } + } +! +! if(result.size() > 1) // Remove trailing "/" or "/." + { +! if(result[result.size() - 1] == '/') +! { +! result.erase(result.size() - 1); +! } +! else if(result[result.size() - 2] == '/' && result[result.size() - 1] == '.') +! { +! result.erase(result.size() - (result.size() == 2 ? 1 : 2)); +! } + } + return result; + } +*************** +*** 159,164 **** +--- 167,181 ---- + } + } + ++ if(result == file) ++ { ++ // ++ // Don't return a full path if we couldn't reduce the given path, instead ++ // return the normalized given path. ++ // ++ result = normalizePath(orig); ++ } ++ + string::size_type pos; + if((pos = result.rfind('.')) != string::npos) + { + diff --git a/dev-cpp/Ice/files/Ice-3.3.0-p3.patch b/dev-cpp/Ice/files/Ice-3.3.0-p3.patch new file mode 100644 index 000000000000..bc8732c5300a --- /dev/null +++ b/dev-cpp/Ice/files/Ice-3.3.0-p3.patch @@ -0,0 +1,17 @@ +diff --git a/cpp/src/Ice/ConnectRequestHandler.cpp b/cpp/src/Ice/ConnectRequestHandler.cpp +index e037745..8c93f22 100644 +--- a/cpp/src/Ice/ConnectRequestHandler.cpp ++++ b/cpp/src/Ice/ConnectRequestHandler.cpp +@@ -212,7 +212,10 @@ ConnectRequestHandler::abortBatchRequest() + Ice::ConnectionI* + ConnectRequestHandler::sendRequest(Outgoing* out) + { +- if(!getConnection(true)->sendRequest(out, _compress, _response) || _response) ++ // Must be called first, _compress might not be initialized before this returns. ++ Ice::ConnectionIPtr connection = getConnection(true); ++ assert(connection); ++ if(!connection->sendRequest(out, _compress, _response) || _response) + { + return _connection.get(); // The request has been sent or we're expecting a response. + } + diff --git a/dev-cpp/Ice/files/Ice-3.3.0-p4.patch b/dev-cpp/Ice/files/Ice-3.3.0-p4.patch new file mode 100644 index 000000000000..5e89b0b0961b --- /dev/null +++ b/dev-cpp/Ice/files/Ice-3.3.0-p4.patch @@ -0,0 +1,57 @@ +diff -r -c -N ../Ice-3.3.0-old/cpp/src/Slice/Preprocessor.cpp ./cpp/src/Slice/Preprocessor.cpp +*** ../Ice-3.3.0-old/cpp/src/Slice/Preprocessor.cpp 2008-05-16 14:54:01.000000000 -0230 +--- ./cpp/src/Slice/Preprocessor.cpp 2008-08-14 11:31:58.000000000 -0230 +*************** +*** 175,192 **** + // + char* buf = mcpp_get_mem_buffer(Out); + +- _cppFile = ".preprocess." + IceUtil::generateUUID(); +- SignalHandler::addFile(_cppFile); + #ifdef _WIN32 + _cppHandle = ::_wfopen(IceUtil::stringToWstring(_cppFile).c_str(), IceUtil::stringToWstring("w+").c_str()); + #else + _cppHandle = ::fopen(_cppFile.c_str(), "w+"); + #endif +! if(buf) + { +! ::fwrite(buf, strlen(buf), 1, _cppHandle); + } +- ::rewind(_cppHandle); + } + + // +--- 175,206 ---- + // + char* buf = mcpp_get_mem_buffer(Out); + + #ifdef _WIN32 ++ TCHAR buffer[512]; ++ DWORD ret = GetTempPath(512, buffer); ++ if(ret > 512 || ret == 0) ++ { ++ fprintf(stderr, "GetTempPath failed (%d)\n", GetLastError()); ++ } ++ _cppFile = string(buffer) + "\\.preprocess." + IceUtil::generateUUID(); + _cppHandle = ::_wfopen(IceUtil::stringToWstring(_cppFile).c_str(), IceUtil::stringToWstring("w+").c_str()); + #else ++ _cppFile = "/tmp/.preprocess." + IceUtil::generateUUID(); + _cppHandle = ::fopen(_cppFile.c_str(), "w+"); + #endif +! if(_cppHandle != NULL) +! { +! SignalHandler::addFile(_cppFile); +! if(buf) +! { +! ::fwrite(buf, strlen(buf), 1, _cppHandle); +! } +! ::rewind(_cppHandle); +! } +! else + { +! fprintf(stderr, "Could not open temporary file: %s\n", _cppFile.c_str()); + } + } + + // + diff --git a/dev-cpp/Ice/files/Ice-3.3.0-p5.patch b/dev-cpp/Ice/files/Ice-3.3.0-p5.patch new file mode 100644 index 000000000000..393aa889cab1 --- /dev/null +++ b/dev-cpp/Ice/files/Ice-3.3.0-p5.patch @@ -0,0 +1,25 @@ +diff --git a/cpp/src/IceGrid/LocatorI.cpp b/cpp/src/IceGrid/LocatorI.cpp +index bf910ba..554a170 100644 +--- a/cpp/src/IceGrid/LocatorI.cpp ++++ b/cpp/src/IceGrid/LocatorI.cpp +@@ -588,13 +588,15 @@ LocatorI::activate(const LocatorAdapterInfo& adapter, const RequestPtr& request) + // we just add this one to the queue. If not, we add it to the queue and initiate + // a call on the adapter to get its direct proxy. + // +- PendingRequestsMap::iterator p; +- p = _pendingRequests.insert(make_pair(adapter.id, PendingRequests())).first; +- p->second.insert(request); +- if(p->second.size() != 1) ++ PendingRequestsMap::iterator p = _pendingRequests.find(adapter.id); ++ if(p != _pendingRequests.end()) + { ++ p->second.insert(request); + return; + } ++ ++ p = _pendingRequests.insert(make_pair(adapter.id, PendingRequests())).first; ++ p->second.insert(request); + } + + AMI_Adapter_activatePtr amiCB = new AMI_Adapter_activateI(this, adapter.id); + diff --git a/dev-cpp/Ice/files/Ice-3.3.0-p6.patch b/dev-cpp/Ice/files/Ice-3.3.0-p6.patch new file mode 100644 index 000000000000..25abc3f41801 --- /dev/null +++ b/dev-cpp/Ice/files/Ice-3.3.0-p6.patch @@ -0,0 +1,41 @@ +diff --git a/cpp/src/IceGrid/LocatorI.cpp b/cpp/src/IceGrid/LocatorI.cpp +index 554a170..3fbe3a1 100644 +--- a/cpp/src/IceGrid/LocatorI.cpp ++++ b/cpp/src/IceGrid/LocatorI.cpp +@@ -236,12 +236,15 @@ LocatorI::Request::activate(const string& id) + // NOTE: we use a timeout large enough to ensure that the activate() call won't + // timeout if the server hangs in deactivation and/or activation. + // +- for(LocatorAdapterInfoSeq::const_iterator p = _adapters.begin(); p != _adapters.end(); ++p) + { +- if(p->id == id) ++ Lock sync(*this); ++ for(LocatorAdapterInfoSeq::const_iterator p = _adapters.begin(); p != _adapters.end(); ++p) + { +- _locator->activate(*p, this); +- _activating.insert(id); ++ if(p->id == id) ++ { ++ _locator->activate(*p, this); ++ _activating.insert(id); ++ } + } + } + +@@ -684,7 +687,14 @@ LocatorI::removePendingResolve(const string& adapterId, int roundRobinCount) + // + if(roundRobinCount > 0) + { +- _database->getAdapter(adapterId)->increaseRoundRobinCount(roundRobinCount); ++ try ++ { ++ _database->getAdapter(adapterId)->increaseRoundRobinCount(roundRobinCount); ++ } ++ catch(const Ice::Exception&) ++ { ++ // Ignore. ++ } + } + + map<string, deque<Ice::AMD_Locator_findAdapterByIdPtr> >::iterator p = _resolves.find(adapterId); + diff --git a/dev-cpp/Ice/files/Ice-3.3.0-p7.patch b/dev-cpp/Ice/files/Ice-3.3.0-p7.patch new file mode 100644 index 000000000000..fcdf85ec5961 --- /dev/null +++ b/dev-cpp/Ice/files/Ice-3.3.0-p7.patch @@ -0,0 +1,475 @@ +diff --git a/cpp/include/Ice/OutgoingAsync.h b/cpp/include/Ice/OutgoingAsync.h +index ae16ece..70f3cf2 100644 +--- a/cpp/include/Ice/OutgoingAsync.h ++++ b/cpp/include/Ice/OutgoingAsync.h +@@ -25,6 +25,7 @@ namespace IceInternal + class BasicStream; + class LocalExceptionWrapper; + class Outgoing; ++class RetryTask; + + class ICE_API OutgoingAsyncMessageCallback : virtual public IceUtil::Shared + { +@@ -49,6 +50,8 @@ public: + + protected: + ++ friend class ::IceInternal::RetryTask; ++ + void __acquireCallback(const Ice::ObjectPrx&); + void __releaseCallback(const Ice::LocalException&); + void __releaseCallback() +@@ -83,6 +86,7 @@ public: + void __finished(const Ice::LocalException&); + void __finished(const LocalExceptionWrapper&); + ++ void __retry(int); + bool __send(); + + protected: +diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp +index 8a1e5f4..b26a194 100644 +--- a/cpp/src/Ice/Instance.cpp ++++ b/cpp/src/Ice/Instance.cpp +@@ -29,6 +29,7 @@ + #include <Ice/LoggerI.h> + #include <Ice/Network.h> + #include <Ice/EndpointFactoryManager.h> ++#include <Ice/RetryQueue.h> + #include <Ice/TcpEndpointI.h> + #include <Ice/UdpEndpointI.h> + #include <Ice/DynamicLibrary.h> +@@ -285,6 +286,19 @@ IceInternal::Instance::endpointHostResolver() + return _endpointHostResolver; + } + ++RetryQueuePtr ++IceInternal::Instance::retryQueue() ++{ ++ IceUtil::RecMutex::Lock sync(*this); ++ ++ if(_state == StateDestroyed) ++ { ++ throw CommunicatorDestroyedException(__FILE__, __LINE__); ++ } ++ ++ return _retryQueue; ++} ++ + IceUtil::TimerPtr + IceInternal::Instance::timer() + { +@@ -991,6 +1005,8 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Initi + _servantFactoryManager = new ObjectFactoryManager(); + + _objectAdapterFactory = new ObjectAdapterFactory(this, communicator); ++ ++ _retryQueue = new RetryQueue(this); + + if(_initData.wstringConverter == 0) + { +@@ -1039,6 +1055,7 @@ IceInternal::Instance::~Instance() + assert(!_serverThreadPool); + assert(!_selectorThread); + assert(!_endpointHostResolver); ++ assert(!_retryQueue); + assert(!_timer); + assert(!_routerManager); + assert(!_locatorManager); +@@ -1200,6 +1217,11 @@ IceInternal::Instance::destroy() + _outgoingConnectionFactory->waitUntilFinished(); + } + ++ if(_retryQueue) ++ { ++ _retryQueue->destroy(); ++ } ++ + ThreadPoolPtr serverThreadPool; + ThreadPoolPtr clientThreadPool; + SelectorThreadPtr selectorThread; +@@ -1210,6 +1232,7 @@ IceInternal::Instance::destroy() + + _objectAdapterFactory = 0; + _outgoingConnectionFactory = 0; ++ _retryQueue = 0; + + if(_connectionMonitor) + { +diff --git a/cpp/src/Ice/Instance.h b/cpp/src/Ice/Instance.h +index f0aa50a..721b347 100644 +--- a/cpp/src/Ice/Instance.h ++++ b/cpp/src/Ice/Instance.h +@@ -30,6 +30,7 @@ + #include <Ice/ObjectFactoryManagerF.h> + #include <Ice/ObjectAdapterFactoryF.h> + #include <Ice/EndpointFactoryManagerF.h> ++#include <Ice/RetryQueueF.h> + #include <Ice/DynamicLibraryF.h> + #include <Ice/PluginF.h> + #include <Ice/Initialize.h> +@@ -71,6 +72,7 @@ public: + ThreadPoolPtr serverThreadPool(); + SelectorThreadPtr selectorThread(); + EndpointHostResolverPtr endpointHostResolver(); ++ RetryQueuePtr retryQueue(); + IceUtil::TimerPtr timer(); + EndpointFactoryManagerPtr endpointFactoryManager() const; + DynamicLibraryListPtr dynamicLibraryList() const; +@@ -134,6 +136,7 @@ private: + ThreadPoolPtr _serverThreadPool; + SelectorThreadPtr _selectorThread; + EndpointHostResolverPtr _endpointHostResolver; ++ RetryQueuePtr _retryQueue; + IceUtil::TimerPtr _timer; + EndpointFactoryManagerPtr _endpointFactoryManager; + DynamicLibraryListPtr _dynamicLibraryList; +diff --git a/cpp/src/Ice/Makefile b/cpp/src/Ice/Makefile +index f236dd4..dbf931e 100644 +--- a/cpp/src/Ice/Makefile ++++ b/cpp/src/Ice/Makefile +@@ -80,6 +80,7 @@ OBJS = Acceptor.o \ + Proxy.o \ + ReferenceFactory.o \ + Reference.o \ ++ RetryQueue.o \ + RequestHandler.o \ + RouterInfo.o \ + Router.o \ +diff --git a/cpp/src/Ice/OutgoingAsync.cpp b/cpp/src/Ice/OutgoingAsync.cpp +index 14da199..c866fe1 100644 +--- a/cpp/src/Ice/OutgoingAsync.cpp ++++ b/cpp/src/Ice/OutgoingAsync.cpp +@@ -24,6 +24,7 @@ + #include <Ice/ReplyStatus.h> + #include <Ice/ImplicitContextI.h> + #include <Ice/ThreadPool.h> ++#include <Ice/RetryQueue.h> + + using namespace std; + using namespace Ice; +@@ -454,6 +455,24 @@ IceInternal::OutgoingAsync::__finished(const LocalExceptionWrapper& ex) + } + } + ++void ++IceInternal::OutgoingAsync::__retry(int interval) ++{ ++ // ++ // This method is called by the proxy to retry an invocation, no ++ // other threads can access this object. ++ // ++ if(interval > 0) ++ { ++ assert(__os); ++ __os->instance()->retryQueue()->add(this, interval); ++ } ++ else ++ { ++ __send(); ++ } ++} ++ + bool + IceInternal::OutgoingAsync::__send() + { +@@ -466,11 +485,11 @@ IceInternal::OutgoingAsync::__send() + } + catch(const LocalExceptionWrapper& ex) + { +- handleException(ex); ++ handleException(ex); // Might call __send() again upon retry and assign _sentSynchronously + } + catch(const Ice::LocalException& ex) + { +- handleException(ex); ++ handleException(ex); // Might call __send() again upon retry and assign _sentSynchronously + } + return _sentSynchronously; + } +@@ -483,6 +502,7 @@ IceInternal::OutgoingAsync::__prepare(const ObjectPrx& prx, const string& operat + _delegate = 0; + _cnt = 0; + _mode = mode; ++ _sentSynchronously = false; + + // + // Can't call async via a batch proxy. +diff --git a/cpp/src/Ice/ProxyFactory.cpp b/cpp/src/Ice/ProxyFactory.cpp +index 2fc5316..eeb554d 100644 +--- a/cpp/src/Ice/ProxyFactory.cpp ++++ b/cpp/src/Ice/ProxyFactory.cpp +@@ -25,32 +25,8 @@ using namespace std; + using namespace Ice; + using namespace IceInternal; + +-namespace +-{ +- +-class RetryTask : public IceUtil::TimerTask +-{ +-public: +- +- RetryTask(const OutgoingAsyncPtr& out) : _out(out) +- { +- } +- +- virtual void +- runTimerTask() +- { +- _out->__send(); +- } +- +-private: +- +- const OutgoingAsyncPtr _out; +-}; +- +-} +- + IceUtil::Shared* IceInternal::upCast(ProxyFactory* p) { return p; } +- ++ + ObjectPrx + IceInternal::ProxyFactory::stringToProxy(const string& str) const + { +@@ -243,34 +219,17 @@ IceInternal::ProxyFactory::checkRetryAfterException(const LocalException& ex, + } + out << " because of exception\n" << ex; + } +- +- if(interval > 0) ++ ++ if(out) + { +- if(out) +- { +- try +- { +- _instance->timer()->schedule(new RetryTask(out), IceUtil::Time::milliSeconds(interval)); +- } +- catch(const IceUtil::IllegalArgumentException&) // Expected if the communicator destroyed the timer. +- { +- throw CommunicatorDestroyedException(__FILE__, __LINE__); +- } +- } +- else +- { +- // +- // Sleep before retrying. +- // +- IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(interval)); +- } ++ out->__retry(interval); + } +- else ++ else if(interval > 0) + { +- if(out) +- { +- out->__send(); +- } ++ // ++ // Sleep before retrying. ++ // ++ IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(interval)); + } + } + +diff --git a/cpp/src/Ice/RetryQueue.cpp b/cpp/src/Ice/RetryQueue.cpp +new file mode 100644 +index 0000000..d6aba62 +--- /dev/null ++++ b/cpp/src/Ice/RetryQueue.cpp +@@ -0,0 +1,92 @@ ++// ********************************************************************** ++// ++// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved. ++// ++// This copy of Ice is licensed to you under the terms described in the ++// ICE_LICENSE file included in this distribution. ++// ++// ********************************************************************** ++ ++#include <Ice/RetryQueue.h> ++#include <Ice/OutgoingAsync.h> ++#include <Ice/LocalException.h> ++#include <Ice/Instance.h> ++ ++using namespace std; ++using namespace Ice; ++using namespace IceInternal; ++ ++IceUtil::Shared* IceInternal::upCast(RetryQueue* p) { return p; } ++ ++IceInternal::RetryTask::RetryTask(const RetryQueuePtr& queue, const OutgoingAsyncPtr& outAsync) : ++ _queue(queue), _outAsync(outAsync) ++{ ++} ++ ++void ++IceInternal::RetryTask::runTimerTask() ++{ ++ if(_queue->remove(this)) ++ { ++ try ++ { ++ _outAsync->__send(); ++ } ++ catch(const Ice::LocalException& ex) ++ { ++ _outAsync->__releaseCallback(ex); ++ } ++ } ++} ++ ++void ++IceInternal::RetryTask::destroy() ++{ ++ _outAsync->__releaseCallback(CommunicatorDestroyedException(__FILE__, __LINE__)); ++} ++ ++bool ++IceInternal::RetryTask::operator<(const RetryTask& rhs) const ++{ ++ return this < &rhs; ++} ++ ++IceInternal::RetryQueue::RetryQueue(const InstancePtr& instance) : _instance(instance) ++{ ++} ++ ++void ++IceInternal::RetryQueue::add(const OutgoingAsyncPtr& out, int interval) ++{ ++ Lock sync(*this); ++ RetryTaskPtr task = new RetryTask(this, out); ++ try ++ { ++ _instance->timer()->schedule(task, IceUtil::Time::milliSeconds(interval)); ++ } ++ catch(const IceUtil::IllegalArgumentException&) // Expected if the communicator destroyed the timer. ++ { ++ throw CommunicatorDestroyedException(__FILE__, __LINE__); ++ } ++ _requests.insert(task); ++} ++ ++void ++IceInternal::RetryQueue::destroy() ++{ ++ Lock sync(*this); ++ for(set<RetryTaskPtr>::const_iterator p = _requests.begin(); p != _requests.end(); ++p) ++ { ++ _instance->timer()->cancel(*p); ++ (*p)->destroy(); ++ } ++ _requests.clear(); ++} ++ ++bool ++IceInternal::RetryQueue::remove(const RetryTaskPtr& task) ++{ ++ Lock sync(*this); ++ return _requests.erase(task) > 0; ++} ++ +diff --git a/cpp/src/Ice/RetryQueue.h b/cpp/src/Ice/RetryQueue.h +new file mode 100644 +index 0000000..960b4a8 +--- /dev/null ++++ b/cpp/src/Ice/RetryQueue.h +@@ -0,0 +1,62 @@ ++// ********************************************************************** ++// ++// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved. ++// ++// This copy of Ice is licensed to you under the terms described in the ++// ICE_LICENSE file included in this distribution. ++// ++// ********************************************************************** ++ ++#ifndef ICE_RETRY_QUEUE_H ++#define ICE_RETRY_QUEUE_H ++ ++#include <IceUtil/Shared.h> ++#include <IceUtil/Mutex.h> ++#include <IceUtil/Timer.h> ++#include <Ice/RetryQueueF.h> ++#include <Ice/OutgoingAsyncF.h> ++#include <Ice/InstanceF.h> ++ ++namespace IceInternal ++{ ++ ++class RetryTask : public IceUtil::TimerTask ++{ ++public: ++ ++ RetryTask(const RetryQueuePtr&, const OutgoingAsyncPtr&); ++ ++ virtual void runTimerTask(); ++ void destroy(); ++ ++ bool operator<(const RetryTask&) const; ++ ++private: ++ ++ const RetryQueuePtr _queue; ++ const OutgoingAsyncPtr _outAsync; ++}; ++typedef IceUtil::Handle<RetryTask> RetryTaskPtr; ++ ++class RetryQueue : public IceUtil::Shared, public IceUtil::Mutex ++{ ++public: ++ ++ RetryQueue(const InstancePtr&); ++ ++ void add(const OutgoingAsyncPtr&, int); ++ void destroy(); ++ ++private: ++ ++ bool remove(const RetryTaskPtr&); ++ friend class RetryTask; ++ ++ const InstancePtr _instance; ++ std::set<RetryTaskPtr> _requests; ++}; ++ ++} ++ ++#endif ++ +diff --git a/cpp/src/Ice/RetryQueueF.h b/cpp/src/Ice/RetryQueueF.h +new file mode 100644 +index 0000000..0e99fd7 +--- /dev/null ++++ b/cpp/src/Ice/RetryQueueF.h +@@ -0,0 +1,24 @@ ++// ********************************************************************** ++// ++// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved. ++// ++// This copy of Ice is licensed to you under the terms described in the ++// ICE_LICENSE file included in this distribution. ++// ++// ********************************************************************** ++ ++#ifndef ICE_RETRY_QUEUE_F_H ++#define ICE_RETRY_QUEUE_F_H ++ ++#include <Ice/Handle.h> ++ ++namespace IceInternal ++{ ++ ++class RetryQueue; ++IceUtil::Shared* upCast(RetryQueue*); ++typedef Handle<RetryQueue> RetryQueuePtr; ++ ++} ++ ++#endif + diff --git a/dev-cpp/Ice/files/Ice-3.3.0-p8.patch b/dev-cpp/Ice/files/Ice-3.3.0-p8.patch new file mode 100644 index 000000000000..d87b1f6db868 --- /dev/null +++ b/dev-cpp/Ice/files/Ice-3.3.0-p8.patch @@ -0,0 +1,232 @@ +diff -c -r -N ../Ice-3.3.0/cpp/include/IceUtil/StringUtil.h ./cpp/include/IceUtil/StringUtil.h +*** ../Ice-3.3.0/cpp/include/IceUtil/StringUtil.h 2008-05-16 14:54:00.000000000 -0230 +--- ./cpp/include/IceUtil/StringUtil.h 2008-10-30 12:51:39.000000000 -0230 +*************** +*** 65,70 **** +--- 65,82 ---- + #else + ICE_UTIL_API std::string errorToString(int); + #endif ++ ++ // ++ // Functions to convert to to all lower/upper case ++ // ++ ICE_UTIL_API std::string toLower(const std::string&); ++ ICE_UTIL_API std::string toUpper(const std::string&); ++ ++ // ++ // Remove all whitespace from a string ++ // ++ ICE_UTIL_API std::string removeWhitespace(const std::string&); ++ + } + + #endif +diff -c -r -N ../Ice-3.3.0/cpp/src/IcePatch2/Calc.cpp ./cpp/src/IcePatch2/Calc.cpp +*** ../Ice-3.3.0/cpp/src/IcePatch2/Calc.cpp 2008-05-16 14:54:00.000000000 -0230 +--- ./cpp/src/IcePatch2/Calc.cpp 2008-10-30 13:04:19.000000000 -0230 +*************** +*** 42,48 **** + + for(string::size_type i = 0; i < lhs.path.size(); ++i) + { +! if(::tolower(lhs.path[i]) != ::tolower(rhs.path[i])) + { + return false; + } +--- 42,48 ---- + + for(string::size_type i = 0; i < lhs.path.size(); ++i) + { +! if(::tolower(static_cast<unsigned char>(lhs.path[i])) != ::tolower(static_cast<unsigned char>(rhs.path[i]))) + { + return false; + } +*************** +*** 59,69 **** + { + for(string::size_type i = 0; i < lhs.path.size() && i < rhs.path.size(); ++i) + { +! if(::tolower(lhs.path[i]) < ::tolower(rhs.path[i])) + { + return true; + } +! else if(::tolower(lhs.path[i]) > ::tolower(rhs.path[i])) + { + return false; + } +--- 59,70 ---- + { + for(string::size_type i = 0; i < lhs.path.size() && i < rhs.path.size(); ++i) + { +! if(::tolower(static_cast<unsigned char>(lhs.path[i])) < ::tolower(static_cast<unsigned char>(rhs.path[i]))) + { + return true; + } +! else if(::tolower(static_cast<unsigned char>(lhs.path[i])) > +! ::tolower(static_cast<unsigned char>(rhs.path[i]))) + { + return false; + } +diff -c -r -N ../Ice-3.3.0/cpp/src/IcePatch2/Client.cpp ./cpp/src/IcePatch2/Client.cpp +*** ../Ice-3.3.0/cpp/src/IcePatch2/Client.cpp 2008-05-16 14:54:00.000000000 -0230 +--- ./cpp/src/IcePatch2/Client.cpp 2008-10-30 12:58:41.000000000 -0230 +*************** +*** 8,13 **** +--- 8,14 ---- + // ********************************************************************** + + #include <IceUtil/Options.h> ++ #include <IceUtil/StringUtil.h> + #include <Ice/Application.h> + #include <IcePatch2/Util.h> + #include <IcePatch2/ClientUtil.h> +*************** +*** 54,60 **** + { + cout << "Do a thorough patch? (yes/no)" << endl; + cin >> answer; +! transform(answer.begin(), answer.end(), answer.begin(), ::tolower); + if(answer == "no") + { + return false; +--- 55,61 ---- + { + cout << "Do a thorough patch? (yes/no)" << endl; + cin >> answer; +! answer = IceUtilInternal::toLower(answer); + if(answer == "no") + { + return false; +diff -c -r -N ../Ice-3.3.0/cpp/src/IcePatch2/Util.cpp ./cpp/src/IcePatch2/Util.cpp +*** ../Ice-3.3.0/cpp/src/IcePatch2/Util.cpp 2008-05-16 14:54:00.000000000 -0230 +--- ./cpp/src/IcePatch2/Util.cpp 2008-10-30 13:01:05.000000000 -0230 +*************** +*** 280,286 **** + } + + if(result == "/." || +! (result.size() == 4 && isalpha(result[0]) && result[1] == ':' && result[2] == '/' && result[3] == '.')) + { + return result.substr(0, result.size() - 1); + } +--- 280,287 ---- + } + + if(result == "/." || +! (result.size() == 4 && isalpha(static_cast<unsigned char>(result[0])) && result[1] == ':' && +! result[2] == '/' && result[3] == '.')) + { + return result.substr(0, result.size() - 1); + } +*************** +*** 290,296 **** + result.erase(result.size() - 2, 2); + } + +! if(result == "/" || (result.size() == 3 && isalpha(result[0]) && result[1] == ':' && result[2] == '/')) + { + return result; + } +--- 291,298 ---- + result.erase(result.size() - 2, 2); + } + +! if(result == "/" || (result.size() == 3 && isalpha(static_cast<unsigned char>(result[0])) && +! result[1] == ':' && result[2] == '/')) + { + return result; + } +*************** +*** 317,328 **** + } + + unsigned i = 0; +! while(isspace(pa[i])) + { + ++i; + } + #ifdef _WIN32 +! return pa[i] == '\\' || pa[i] == '/' || pa.size() > i + 1 && isalpha(pa[i]) && pa[i + 1] == ':'; + #else + return pa[i] == '/'; + #endif +--- 319,331 ---- + } + + unsigned i = 0; +! while(isspace(static_cast<unsigned char>(pa[i]))) + { + ++i; + } + #ifdef _WIN32 +! return pa[i] == '\\' || pa[i] == '/' || pa.size() > i + 1 && +! isalpha(static_cast<unsigned char>(pa[i])) && pa[i + 1] == ':'; + #else + return pa[i] == '/'; + #endif +*************** +*** 333,339 **** + { + string path = simplify(pa); + #ifdef _WIN32 +! return path == "/" || path.size() == 3 && isalpha(path[0]) && path[1] == ':' && path[2] == '/'; + #else + return path == "/"; + #endif +--- 336,343 ---- + { + string path = simplify(pa); + #ifdef _WIN32 +! return path == "/" || path.size() == 3 && isalpha(static_cast<unsigned char>(path[0])) && +! path[1] == ':' && path[2] == '/'; + #else + return path == "/"; + #endif +diff -c -r -N ../Ice-3.3.0/cpp/src/IceUtil/StringUtil.cpp ./cpp/src/IceUtil/StringUtil.cpp +*** ../Ice-3.3.0/cpp/src/IceUtil/StringUtil.cpp 2008-05-16 14:54:01.000000000 -0230 +--- ./cpp/src/IceUtil/StringUtil.cpp 2008-10-30 12:55:40.000000000 -0230 +*************** +*** 687,690 **** +--- 687,726 ---- + return errorToString(errno); + } + ++ string ++ IceUtilInternal::toLower(const std::string& s) ++ { ++ string result; ++ for(unsigned int i = 0; i < s.length(); ++ i) ++ { ++ result += tolower(static_cast<unsigned char>(s[i])); ++ } ++ return result; ++ } ++ ++ string ++ IceUtilInternal::toUpper(const std::string& s) ++ { ++ string result; ++ for(unsigned int i = 0; i < s.length(); ++ i) ++ { ++ result += toupper(static_cast<unsigned char>(s[i])); ++ } ++ return result; ++ } ++ ++ string ++ IceUtilInternal::removeWhitespace(const std::string& s) ++ { ++ string result; ++ for(unsigned int i = 0; i < s.length(); ++ i) ++ { ++ if(!isspace(static_cast<unsigned char>(s[i]))) ++ { ++ result += s[i]; ++ } ++ } ++ return result; ++ } ++ + #endif + |