diff options
author | Marc Laukien <marc@zeroc.com> | 2001-12-10 14:42:47 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2001-12-10 14:42:47 +0000 |
commit | 7a9c2ab84f983e83194fe9f3dfa468cc99ff362f (patch) | |
tree | b450de8055c78de6fc8c97775d11fa6002d528c7 /cpp | |
parent | performance improvements for win32 (diff) | |
download | ice-7a9c2ab84f983e83194fe9f3dfa468cc99ff362f.tar.bz2 ice-7a9c2ab84f983e83194fe9f3dfa468cc99ff362f.tar.xz ice-7a9c2ab84f983e83194fe9f3dfa468cc99ff362f.zip |
SOCKET changes
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/src/Ice/Acceptor.h | 6 | ||||
-rw-r--r-- | cpp/src/Ice/Emitter.cpp | 4 | ||||
-rw-r--r-- | cpp/src/Ice/Network.cpp | 30 | ||||
-rw-r--r-- | cpp/src/Ice/Network.h | 30 | ||||
-rw-r--r-- | cpp/src/Ice/SslAcceptor.cpp | 7 | ||||
-rw-r--r-- | cpp/src/Ice/SslAcceptor.h | 4 | ||||
-rw-r--r-- | cpp/src/Ice/SslConnector.cpp | 3 | ||||
-rw-r--r-- | cpp/src/Ice/SslTransceiver.cpp | 6 | ||||
-rw-r--r-- | cpp/src/Ice/SslTransceiver.h | 6 | ||||
-rw-r--r-- | cpp/src/Ice/TcpAcceptor.cpp | 6 | ||||
-rw-r--r-- | cpp/src/Ice/TcpAcceptor.h | 4 | ||||
-rw-r--r-- | cpp/src/Ice/TcpConnector.cpp | 2 | ||||
-rw-r--r-- | cpp/src/Ice/TcpTransceiver.cpp | 14 | ||||
-rw-r--r-- | cpp/src/Ice/TcpTransceiver.h | 6 | ||||
-rw-r--r-- | cpp/src/Ice/ThreadPool.cpp | 36 | ||||
-rw-r--r-- | cpp/src/Ice/ThreadPool.h | 22 | ||||
-rw-r--r-- | cpp/src/Ice/Transceiver.h | 6 | ||||
-rw-r--r-- | cpp/src/Ice/UdpTransceiver.cpp | 4 | ||||
-rw-r--r-- | cpp/src/Ice/UdpTransceiver.h | 4 |
19 files changed, 104 insertions, 96 deletions
diff --git a/cpp/src/Ice/Acceptor.h b/cpp/src/Ice/Acceptor.h index 3de7a9536f3..c694967d02c 100644 --- a/cpp/src/Ice/Acceptor.h +++ b/cpp/src/Ice/Acceptor.h @@ -15,6 +15,10 @@ #include <Ice/AcceptorF.h> #include <Ice/TransceiverF.h> +#ifndef WIN32 +# define SOCKET int +#endif + namespace IceInternal { @@ -22,7 +26,7 @@ class Acceptor : public ::IceUtil::Shared { public: - virtual int fd() = 0; + virtual SOCKET fd() = 0; virtual void close() = 0; virtual void shutdown() = 0; virtual void listen() = 0; diff --git a/cpp/src/Ice/Emitter.cpp b/cpp/src/Ice/Emitter.cpp index 318a51d3f14..141591e7fc0 100644 --- a/cpp/src/Ice/Emitter.cpp +++ b/cpp/src/Ice/Emitter.cpp @@ -413,9 +413,13 @@ IceInternal::Emitter::setState(State state, const LocalException& ex) case StateClosed: { if (_threadPool) + { _threadPool->unregister(_transceiver->fd()); + } else + { _transceiver->close(); + } break; } } diff --git a/cpp/src/Ice/Network.cpp b/cpp/src/Ice/Network.cpp index 88dec87e7fa..e3f7b1802f0 100644 --- a/cpp/src/Ice/Network.cpp +++ b/cpp/src/Ice/Network.cpp @@ -207,10 +207,10 @@ IceInternal::notConnected() } } -int +SOCKET IceInternal::createSocket(bool udp) { - int fd; + SOCKET fd; if (udp) { @@ -240,7 +240,7 @@ IceInternal::createSocket(bool udp) } void -IceInternal::closeSocket(int fd) +IceInternal::closeSocket(SOCKET fd) { #ifdef WIN32 int error = WSAGetLastError(); @@ -254,7 +254,7 @@ IceInternal::closeSocket(int fd) } void -IceInternal::setBlock(int fd, bool block) +IceInternal::setBlock(SOCKET fd, bool block) { if (block) { @@ -281,7 +281,7 @@ IceInternal::setBlock(int fd, bool block) } void -IceInternal::setTcpNoDelay(int fd) +IceInternal::setTcpNoDelay(SOCKET fd) { int flag = 1; if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof(int)) == SOCKET_ERROR) @@ -294,7 +294,7 @@ IceInternal::setTcpNoDelay(int fd) } void -IceInternal::setKeepAlive(int fd) +IceInternal::setKeepAlive(SOCKET fd) { int flag = 1; if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (char*)&flag, sizeof(int)) == SOCKET_ERROR) @@ -307,7 +307,7 @@ IceInternal::setKeepAlive(int fd) } void -IceInternal::setSendBufferSize(int fd, int sz) +IceInternal::setSendBufferSize(SOCKET fd, int sz) { if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char*)&sz, sizeof(int)) == SOCKET_ERROR) { @@ -319,7 +319,7 @@ IceInternal::setSendBufferSize(int fd, int sz) } void -IceInternal::doBind(int fd, struct sockaddr_in& addr) +IceInternal::doBind(SOCKET fd, struct sockaddr_in& addr) { #ifndef WIN32 int flag = 1; @@ -350,7 +350,7 @@ IceInternal::doBind(int fd, struct sockaddr_in& addr) } void -IceInternal::doListen(int fd, int backlog) +IceInternal::doListen(SOCKET fd, int backlog) { repeatListen: if (::listen(fd, backlog) == SOCKET_ERROR) @@ -368,7 +368,7 @@ repeatListen: } void -IceInternal::doConnect(int fd, struct sockaddr_in& addr, int timeout) +IceInternal::doConnect(SOCKET fd, struct sockaddr_in& addr, int timeout) { #ifdef WIN32 // @@ -498,8 +498,8 @@ repeatConnect: } } -int -IceInternal::doAccept(int fd, int timeout) +SOCKET +IceInternal::doAccept(SOCKET fd, int timeout) { int ret; @@ -699,11 +699,11 @@ IceInternal::getLocalHost(bool numeric) } void -IceInternal::createPipe(int fds[2]) +IceInternal::createPipe(SOCKET fds[2]) { #ifdef WIN32 - int fd = createSocket(false); + SOCKET fd = createSocket(false); struct sockaddr_in addr; memset(&addr, 0, sizeof(addr)); @@ -997,7 +997,7 @@ IceInternal::lastErrorToStringDNS() static JTCMutex inetNtoaMutex; std::string -IceInternal::fdToString(int fd) +IceInternal::fdToString(SOCKET fd) { if(fd == INVALID_SOCKET) { diff --git a/cpp/src/Ice/Network.h b/cpp/src/Ice/Network.h index e102cdcab63..3be1a32e589 100644 --- a/cpp/src/Ice/Network.h +++ b/cpp/src/Ice/Network.h @@ -30,11 +30,9 @@ typedef int socklen_t; #endif -#ifndef SOCKET_ERROR +#ifndef WIN32 +# define SOCKET int # define SOCKET_ERROR -1 -#endif - -#ifndef INVALID_SOCKET # define INVALID_SOCKET -1 #endif @@ -70,31 +68,31 @@ bool connectInProgress(); bool connectionLost(); bool notConnected(); -int createSocket(bool); -void closeSocket(int); +SOCKET createSocket(bool); +void closeSocket(SOCKET); -void setBlock(int, bool); -void setTcpNoDelay(int); -void setKeepAlive(int); -void setSendBufferSize(int, int); +void setBlock(SOCKET, bool); +void setTcpNoDelay(SOCKET); +void setKeepAlive(SOCKET); +void setSendBufferSize(SOCKET, int); -void doBind(int, struct sockaddr_in&); -void doListen(int, int); -void doConnect(int, struct sockaddr_in&, int); -int doAccept(int, int); +void doBind(SOCKET, struct sockaddr_in&); +void doListen(SOCKET, int); +void doConnect(SOCKET, struct sockaddr_in&, int); +SOCKET doAccept(SOCKET, int); void getAddress(const char*, int, struct sockaddr_in&); void getLocalAddress(int, struct sockaddr_in&); std::string getLocalHost(bool); -void createPipe(int fds[2]); +void createPipe(SOCKET fds[2]); std::string errorToString(int); std::string errorToStringDNS(int); std::string lastErrorToString(); std::string lastErrorToStringDNS(); -std::string fdToString(int); +std::string fdToString(SOCKET); std::string addrToString(const struct sockaddr_in&); } diff --git a/cpp/src/Ice/SslAcceptor.cpp b/cpp/src/Ice/SslAcceptor.cpp index e9a4987be18..bf2281eceaf 100644 --- a/cpp/src/Ice/SslAcceptor.cpp +++ b/cpp/src/Ice/SslAcceptor.cpp @@ -7,6 +7,7 @@ // All Rights Reserved // // ********************************************************************** + #ifdef WIN32 #pragma warning(disable:4786) #endif @@ -35,7 +36,7 @@ using IceSecurity::Ssl::Factory; using IceSecurity::Ssl::System; using IceSecurity::Ssl::ShutdownException; -int +SOCKET IceInternal::SslAcceptor::fd() { return _fd; @@ -51,7 +52,7 @@ IceInternal::SslAcceptor::close() _logger->trace(_traceLevels->networkCat, s.str()); } - int fd = _fd; + SOCKET fd = _fd; _fd = INVALID_SOCKET; closeSocket(fd); } @@ -93,7 +94,7 @@ IceInternal::SslAcceptor::listen() TransceiverPtr IceInternal::SslAcceptor::accept(int timeout) { - int fd = doAccept(_fd, timeout); + SOCKET fd = doAccept(_fd, timeout); if (_traceLevels->network >= 1) { diff --git a/cpp/src/Ice/SslAcceptor.h b/cpp/src/Ice/SslAcceptor.h index a143180c2c9..5d2aa855795 100644 --- a/cpp/src/Ice/SslAcceptor.h +++ b/cpp/src/Ice/SslAcceptor.h @@ -30,7 +30,7 @@ class SslAcceptor : public Acceptor { public: - virtual int fd(); + virtual SOCKET fd(); virtual void close(); virtual void shutdown(); virtual void listen(); @@ -50,7 +50,7 @@ private: InstancePtr _instance; TraceLevelsPtr _traceLevels; ::Ice::LoggerPtr _logger; - int _fd; + SOCKET _fd; int _backlog; struct sockaddr_in _addr; }; diff --git a/cpp/src/Ice/SslConnector.cpp b/cpp/src/Ice/SslConnector.cpp index dbba59701d8..a51fa0349ec 100644 --- a/cpp/src/Ice/SslConnector.cpp +++ b/cpp/src/Ice/SslConnector.cpp @@ -7,6 +7,7 @@ // All Rights Reserved // // ********************************************************************** + #ifdef WIN32 #pragma warning(disable:4786) #endif @@ -44,7 +45,7 @@ IceInternal::SslConnector::connect(int timeout) _logger->trace(_traceLevels->networkCat, s.str()); } - int fd = createSocket(false); + SOCKET fd = createSocket(false); doConnect(fd, _addr, timeout); if (_traceLevels->network >= 1) diff --git a/cpp/src/Ice/SslTransceiver.cpp b/cpp/src/Ice/SslTransceiver.cpp index 03186976538..31d9e854612 100644 --- a/cpp/src/Ice/SslTransceiver.cpp +++ b/cpp/src/Ice/SslTransceiver.cpp @@ -23,7 +23,7 @@ using namespace std; using namespace Ice; using namespace IceInternal; -int +SOCKET IceInternal::SslTransceiver::fd() { return _fd; @@ -41,7 +41,7 @@ IceInternal::SslTransceiver::close() _logger->trace(_traceLevels->networkCat, s.str()); } - int fd = _fd; + SOCKET fd = _fd; cleanUpSSL(); _fd = INVALID_SOCKET; ::shutdown(fd, SHUT_RDWR); // helps to unblock threads in recv() @@ -96,7 +96,7 @@ IceInternal::SslTransceiver::toString() const return fdToString(_fd); } -IceInternal::SslTransceiver::SslTransceiver(const InstancePtr& instance, int fd, Connection* sslConnection) : +IceInternal::SslTransceiver::SslTransceiver(const InstancePtr& instance, SOCKET fd, Connection* sslConnection) : _instance(instance), _fd(fd), _traceLevels(instance->traceLevels()), diff --git a/cpp/src/Ice/SslTransceiver.h b/cpp/src/Ice/SslTransceiver.h index c4a1290e12f..502e46946d5 100644 --- a/cpp/src/Ice/SslTransceiver.h +++ b/cpp/src/Ice/SslTransceiver.h @@ -29,7 +29,7 @@ class SslTransceiver : public Transceiver { public: - virtual int fd(); + virtual SOCKET fd(); virtual void close(); virtual void shutdown(); virtual void write(Buffer&, int); @@ -38,7 +38,7 @@ public: private: - SslTransceiver(const InstancePtr&, int, Connection*); + SslTransceiver(const InstancePtr&, SOCKET, Connection*); virtual ~SslTransceiver(); void cleanUpSSL(); @@ -46,7 +46,7 @@ private: friend class SslAcceptor; InstancePtr _instance; - int _fd; + SOCKET _fd; TraceLevelsPtr _traceLevels; ::Ice::LoggerPtr _logger; fd_set _rFdSet; diff --git a/cpp/src/Ice/TcpAcceptor.cpp b/cpp/src/Ice/TcpAcceptor.cpp index 73b19611565..d068da40408 100644 --- a/cpp/src/Ice/TcpAcceptor.cpp +++ b/cpp/src/Ice/TcpAcceptor.cpp @@ -20,7 +20,7 @@ using namespace std; using namespace Ice; using namespace IceInternal; -int +SOCKET IceInternal::TcpAcceptor::fd() { return _fd; @@ -36,7 +36,7 @@ IceInternal::TcpAcceptor::close() _logger->trace(_traceLevels->networkCat, s.str()); } - int fd = _fd; + SOCKET fd = _fd; _fd = INVALID_SOCKET; closeSocket(fd); } @@ -78,7 +78,7 @@ IceInternal::TcpAcceptor::listen() TransceiverPtr IceInternal::TcpAcceptor::accept(int timeout) { - int fd = doAccept(_fd, timeout); + SOCKET fd = doAccept(_fd, timeout); if (_traceLevels->network >= 1) { diff --git a/cpp/src/Ice/TcpAcceptor.h b/cpp/src/Ice/TcpAcceptor.h index 7ad0d87c551..4ff3c09750d 100644 --- a/cpp/src/Ice/TcpAcceptor.h +++ b/cpp/src/Ice/TcpAcceptor.h @@ -30,7 +30,7 @@ class TcpAcceptor : public Acceptor { public: - virtual int fd(); + virtual SOCKET fd(); virtual void close(); virtual void shutdown(); virtual void listen(); @@ -50,7 +50,7 @@ private: InstancePtr _instance; TraceLevelsPtr _traceLevels; ::Ice::LoggerPtr _logger; - int _fd; + SOCKET _fd; int _backlog; struct sockaddr_in _addr; }; diff --git a/cpp/src/Ice/TcpConnector.cpp b/cpp/src/Ice/TcpConnector.cpp index c9de0b46942..1147b5268b2 100644 --- a/cpp/src/Ice/TcpConnector.cpp +++ b/cpp/src/Ice/TcpConnector.cpp @@ -30,7 +30,7 @@ IceInternal::TcpConnector::connect(int timeout) _logger->trace(_traceLevels->networkCat, s.str()); } - int fd = createSocket(false); + SOCKET fd = createSocket(false); doConnect(fd, _addr, timeout); if (_traceLevels->network >= 1) diff --git a/cpp/src/Ice/TcpTransceiver.cpp b/cpp/src/Ice/TcpTransceiver.cpp index 3751e5955e1..8100af8791d 100644 --- a/cpp/src/Ice/TcpTransceiver.cpp +++ b/cpp/src/Ice/TcpTransceiver.cpp @@ -20,7 +20,7 @@ using namespace std; using namespace Ice; using namespace IceInternal; -int +SOCKET IceInternal::TcpTransceiver::fd() { return _fd; @@ -36,7 +36,7 @@ IceInternal::TcpTransceiver::close() _logger->trace(_traceLevels->networkCat, s.str()); } - int fd = _fd; + SOCKET fd = _fd; _fd = INVALID_SOCKET; ::shutdown(fd, SHUT_RDWR); // helps to unblock threads in recv() closeSocket(fd); @@ -96,8 +96,8 @@ IceInternal::TcpTransceiver::write(Buffer& buf, int timeout) if (wouldBlock()) { - int fd = _fd; // Copy fd, in case another thread calls close() - if (fd != -1) + SOCKET fd = _fd; // Copy fd, in case another thread calls close() + if (fd != INVALID_SOCKET) { repeatSelect: int ret; @@ -196,8 +196,8 @@ IceInternal::TcpTransceiver::read(Buffer& buf, int timeout) if (wouldBlock()) { - int fd = _fd; // Copy fd, in case another thread calls close() - if (fd != -1) + SOCKET fd = _fd; // Copy fd, in case another thread calls close() + if (fd != INVALID_SOCKET) { repeatSelect: int ret; @@ -271,7 +271,7 @@ IceInternal::TcpTransceiver::toString() const return fdToString(_fd); } -IceInternal::TcpTransceiver::TcpTransceiver(const InstancePtr& instance, int fd) : +IceInternal::TcpTransceiver::TcpTransceiver(const InstancePtr& instance, SOCKET fd) : _instance(instance), _fd(fd), _traceLevels(instance->traceLevels()), diff --git a/cpp/src/Ice/TcpTransceiver.h b/cpp/src/Ice/TcpTransceiver.h index d8fa3fe1c45..939ff3b13f9 100644 --- a/cpp/src/Ice/TcpTransceiver.h +++ b/cpp/src/Ice/TcpTransceiver.h @@ -26,7 +26,7 @@ class TcpTransceiver : public Transceiver { public: - virtual int fd(); + virtual SOCKET fd(); virtual void close(); virtual void shutdown(); virtual void write(Buffer&, int); @@ -35,13 +35,13 @@ public: private: - TcpTransceiver(const InstancePtr&, int); + TcpTransceiver(const InstancePtr&, SOCKET); virtual ~TcpTransceiver(); friend class TcpConnector; friend class TcpAcceptor; InstancePtr _instance; - int _fd; + SOCKET _fd; TraceLevelsPtr _traceLevels; ::Ice::LoggerPtr _logger; fd_set _rFdSet; diff --git a/cpp/src/Ice/ThreadPool.cpp b/cpp/src/Ice/ThreadPool.cpp index 9a454f5a0f9..88478334e23 100644 --- a/cpp/src/Ice/ThreadPool.cpp +++ b/cpp/src/Ice/ThreadPool.cpp @@ -27,7 +27,7 @@ void IceInternal::incRef(ThreadPool* p) { p->__incRef(); } void IceInternal::decRef(ThreadPool* p) { p->__decRef(); } void -IceInternal::ThreadPool::_register(int fd, const EventHandlerPtr& handler) +IceInternal::ThreadPool::_register(SOCKET fd, const EventHandlerPtr& handler) { JTCSyncT<JTCMonitorT<JTCMutex> > sync(*this); if (handler->server()) @@ -39,7 +39,7 @@ IceInternal::ThreadPool::_register(int fd, const EventHandlerPtr& handler) } void -IceInternal::ThreadPool::unregister(int fd) +IceInternal::ThreadPool::unregister(SOCKET fd) { JTCSyncT<JTCMonitorT<JTCMutex> > sync(*this); _removes.push_back(fd); @@ -148,11 +148,11 @@ IceInternal::ThreadPool::getMaxConnections() IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance) : _instance(instance), _destroyed(false), - _lastFd(-1), + _lastFd(INVALID_SOCKET), _servers(0), _timeout(0) { - int fds[2]; + SOCKET fds[2]; createPipe(fds); _fdIntrRead = fds[0]; _fdIntrWrite = fds[1]; @@ -321,11 +321,11 @@ IceInternal::ThreadPool::run() // filedescriptor has priority. // assert(fdSet.fd_count > 0); - int largerFd = _maxFd + 1; - int smallestFd = _maxFd + 1; + SOCKET largerFd = _maxFd + 1; + SOCKET smallestFd = _maxFd + 1; for (u_short i = 0; i < fdSet.fd_count; ++i) { - int fd = static_cast<int>(fdSet.fd_array[i]); + SOCKET fd = fdSet.fd_array[i]; if (fd == _fdIntrRead) { @@ -334,7 +334,7 @@ IceInternal::ThreadPool::run() break; } - if (fd > _lastFd) + if (_lastFd == INVALID_SOCKET || fd > _lastFd) { largerFd = min(largerFd, fd); } @@ -368,7 +368,7 @@ IceInternal::ThreadPool::run() // // New handlers have been added. // - for (vector<pair<int, EventHandlerPtr> >::iterator p = _adds.begin(); p != _adds.end(); ++p) + for (vector<pair<SOCKET, EventHandlerPtr> >::iterator p = _adds.begin(); p != _adds.end(); ++p) { _reapList.push_front(p->first); _handlerMap[p->first] = make_pair(p->second, _reapList.begin()); @@ -384,15 +384,11 @@ IceInternal::ThreadPool::run() // // Handlers are permanently removed. // - for (vector<int>::iterator p = _removes.begin(); p != _removes.end(); ++p) + for (vector<SOCKET>::iterator p = _removes.begin(); p != _removes.end(); ++p) { - map<int, pair<EventHandlerPtr, list<int>::iterator> >::iterator q = _handlerMap.find(*p); + map<SOCKET, pair<EventHandlerPtr, list<SOCKET>::iterator> >::iterator q = _handlerMap.find(*p); assert(q != _handlerMap.end()); -#ifdef WIN32 - FD_CLR(static_cast<u_int>(*p), &_fdSet); -#else FD_CLR(*p, &_fdSet); -#endif q->second.first->finished(); if (q->second.first->server()) { @@ -426,16 +422,16 @@ IceInternal::ThreadPool::run() // reap = false; // _handlerMap.size() is faster than _reapList() with most STLs. - if (_maxConnections > 0 && _handlerMap.size() > static_cast<list<int>::size_type>(_maxConnections)) + if (_maxConnections > 0 && _handlerMap.size() > static_cast<list<SOCKET>::size_type>(_maxConnections)) { - for (list<int>::reverse_iterator p = _reapList.rbegin(); p != _reapList.rend(); ++p) + for (list<SOCKET>::reverse_iterator p = _reapList.rbegin(); p != _reapList.rend(); ++p) { - int fd = *p; + SOCKET fd = *p; if (fd != -1) { _reapList.pop_back(); _reapList.push_front(-1); - map<int, pair<EventHandlerPtr, list<int>::iterator> >::iterator q = _handlerMap.find(fd); + map<SOCKET, pair<EventHandlerPtr, list<SOCKET>::iterator> >::iterator q = _handlerMap.find(fd); q->second.second = _reapList.begin(); handler = q->second.first; reap = true; @@ -476,7 +472,7 @@ IceInternal::ThreadPool::run() } #endif - map<int, pair<EventHandlerPtr, list<int>::iterator> >::iterator p = _handlerMap.find(_lastFd); + map<SOCKET, pair<EventHandlerPtr, list<SOCKET>::iterator> >::iterator p = _handlerMap.find(_lastFd); if(p == _handlerMap.end()) { ostringstream s; diff --git a/cpp/src/Ice/ThreadPool.h b/cpp/src/Ice/ThreadPool.h index 40023194af6..a5fd8c1e47b 100644 --- a/cpp/src/Ice/ThreadPool.h +++ b/cpp/src/Ice/ThreadPool.h @@ -26,8 +26,8 @@ class ThreadPool : public ::IceUtil::Shared, public JTCMonitorT<JTCMutex> { public: - void _register(int, const EventHandlerPtr&); - void unregister(int); + void _register(SOCKET, const EventHandlerPtr&); + void unregister(SOCKET); void promoteFollower(); void initiateServerShutdown(); // Signal-safe shutdown initiation. void waitUntilServerFinished(); @@ -52,16 +52,16 @@ private: InstancePtr _instance; bool _destroyed; - int _maxFd; - int _minFd; - int _lastFd; - int _fdIntrRead; - int _fdIntrWrite; + SOCKET _maxFd; + SOCKET _minFd; + SOCKET _lastFd; + SOCKET _fdIntrRead; + SOCKET _fdIntrWrite; fd_set _fdSet; - std::vector<std::pair<int, EventHandlerPtr> > _adds; - std::vector<int> _removes; - std::map<int, std::pair<EventHandlerPtr, std::list<int>::iterator> > _handlerMap; - std::list<int> _reapList; + std::vector<std::pair<SOCKET, EventHandlerPtr> > _adds; + std::vector<SOCKET> _removes; + std::map<SOCKET, std::pair<EventHandlerPtr, std::list<SOCKET>::iterator> > _handlerMap; + std::list<SOCKET> _reapList; int _servers; int _timeout; JTCMutex _threadMutex; diff --git a/cpp/src/Ice/Transceiver.h b/cpp/src/Ice/Transceiver.h index 7fa185e4454..1648abb2793 100644 --- a/cpp/src/Ice/Transceiver.h +++ b/cpp/src/Ice/Transceiver.h @@ -14,6 +14,10 @@ #include <IceUtil/Shared.h> #include <Ice/TransceiverF.h> +#ifndef WIN32 +# define SOCKET int +#endif + namespace IceInternal { @@ -23,7 +27,7 @@ class Transceiver : public ::IceUtil::Shared { public: - virtual int fd() = 0; + virtual SOCKET fd() = 0; virtual void close() = 0; virtual void shutdown() = 0; virtual void write(Buffer&, int) = 0; diff --git a/cpp/src/Ice/UdpTransceiver.cpp b/cpp/src/Ice/UdpTransceiver.cpp index 24155334528..8726052312b 100644 --- a/cpp/src/Ice/UdpTransceiver.cpp +++ b/cpp/src/Ice/UdpTransceiver.cpp @@ -20,7 +20,7 @@ using namespace std; using namespace Ice; using namespace IceInternal; -int +SOCKET IceInternal::UdpTransceiver::fd() { return _fd; @@ -43,7 +43,7 @@ IceInternal::UdpTransceiver::close() _logger->trace(_traceLevels->networkCat, s.str()); } - int fd = _fd; + SOCKET fd = _fd; _fd = INVALID_SOCKET; closeSocket(fd); } diff --git a/cpp/src/Ice/UdpTransceiver.h b/cpp/src/Ice/UdpTransceiver.h index 832820a7d84..98d0e01b561 100644 --- a/cpp/src/Ice/UdpTransceiver.h +++ b/cpp/src/Ice/UdpTransceiver.h @@ -29,7 +29,7 @@ class UdpTransceiver : public Transceiver { public: - virtual int fd(); + virtual SOCKET fd(); virtual void close(); virtual void shutdown(); virtual void write(Buffer&, int); @@ -51,7 +51,7 @@ private: TraceLevelsPtr _traceLevels; ::Ice::LoggerPtr _logger; bool _sender; - int _fd; + SOCKET _fd; struct sockaddr_in _addr; }; |