summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2001-12-10 14:42:47 +0000
committerMarc Laukien <marc@zeroc.com>2001-12-10 14:42:47 +0000
commit7a9c2ab84f983e83194fe9f3dfa468cc99ff362f (patch)
treeb450de8055c78de6fc8c97775d11fa6002d528c7 /cpp
parentperformance improvements for win32 (diff)
downloadice-7a9c2ab84f983e83194fe9f3dfa468cc99ff362f.tar.bz2
ice-7a9c2ab84f983e83194fe9f3dfa468cc99ff362f.tar.xz
ice-7a9c2ab84f983e83194fe9f3dfa468cc99ff362f.zip
SOCKET changes
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/Ice/Acceptor.h6
-rw-r--r--cpp/src/Ice/Emitter.cpp4
-rw-r--r--cpp/src/Ice/Network.cpp30
-rw-r--r--cpp/src/Ice/Network.h30
-rw-r--r--cpp/src/Ice/SslAcceptor.cpp7
-rw-r--r--cpp/src/Ice/SslAcceptor.h4
-rw-r--r--cpp/src/Ice/SslConnector.cpp3
-rw-r--r--cpp/src/Ice/SslTransceiver.cpp6
-rw-r--r--cpp/src/Ice/SslTransceiver.h6
-rw-r--r--cpp/src/Ice/TcpAcceptor.cpp6
-rw-r--r--cpp/src/Ice/TcpAcceptor.h4
-rw-r--r--cpp/src/Ice/TcpConnector.cpp2
-rw-r--r--cpp/src/Ice/TcpTransceiver.cpp14
-rw-r--r--cpp/src/Ice/TcpTransceiver.h6
-rw-r--r--cpp/src/Ice/ThreadPool.cpp36
-rw-r--r--cpp/src/Ice/ThreadPool.h22
-rw-r--r--cpp/src/Ice/Transceiver.h6
-rw-r--r--cpp/src/Ice/UdpTransceiver.cpp4
-rw-r--r--cpp/src/Ice/UdpTransceiver.h4
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;
};