diff options
author | Jose <jose@zeroc.com> | 2012-07-13 00:18:06 +0200 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2012-07-13 00:18:06 +0200 |
commit | 70802b63320582f0afa8229659ea9fe4a21d02ec (patch) | |
tree | eb455947cc774cc558f96b8d7c78373d2a6f1c2b /cpp/src/Ice/TcpAcceptor.cpp | |
parent | ICE-4839 - Glacier2 sessionHelper IceSSL plug-in (diff) | |
download | ice-70802b63320582f0afa8229659ea9fe4a21d02ec.tar.bz2 ice-70802b63320582f0afa8229659ea9fe4a21d02ec.tar.xz ice-70802b63320582f0afa8229659ea9fe4a21d02ec.zip |
WinRT support
Diffstat (limited to 'cpp/src/Ice/TcpAcceptor.cpp')
-rw-r--r-- | cpp/src/Ice/TcpAcceptor.cpp | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/cpp/src/Ice/TcpAcceptor.cpp b/cpp/src/Ice/TcpAcceptor.cpp index 27a59ef47ad..0fc4fbc710c 100644 --- a/cpp/src/Ice/TcpAcceptor.cpp +++ b/cpp/src/Ice/TcpAcceptor.cpp @@ -12,7 +12,6 @@ #include <Ice/Instance.h> #include <Ice/TraceLevels.h> #include <Ice/LoggerUtil.h> -#include <Ice/Network.h> #include <Ice/Exception.h> #include <Ice/Properties.h> #include <IceUtil/StringUtil.h> @@ -66,7 +65,7 @@ IceInternal::TcpAcceptor::listen() _fd = INVALID_SOCKET; throw; } - + if(_traceLevels->network >= 1) { Trace out(_logger, _traceLevels->networkCat); @@ -105,7 +104,7 @@ IceInternal::TcpAcceptor::startAccept() } assert(_acceptFd == INVALID_SOCKET); - _acceptFd = createSocket(false, _addr.ss_family); + _acceptFd = createSocket(false, _addr); const int sz = static_cast<int>(_acceptBuf.size() / 2); if(!AcceptEx(_fd, _acceptFd, &_acceptBuf[0], 0, sz, sz, &_info.count, #if defined(_MSC_VER) && (_MSC_VER < 1300) // COMPILER FIX: VC60 @@ -134,22 +133,19 @@ IceInternal::TcpAcceptor::finishAccept() _acceptError = _info.error; } } + #endif TransceiverPtr IceInternal::TcpAcceptor::accept() { - SOCKET fd; -#ifndef ICE_USE_IOCP - fd = doAccept(_fd); -#else +#ifdef ICE_USE_IOCP if(_acceptFd == INVALID_SOCKET) { SocketException ex(__FILE__, __LINE__); ex.error = _acceptError; throw ex; } - if(setsockopt(_acceptFd, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT, (char*)&_acceptFd, sizeof(_acceptFd)) == SOCKET_ERROR) { @@ -160,9 +156,12 @@ IceInternal::TcpAcceptor::accept() throw ex; } - fd = _acceptFd; + SOCKET fd = _acceptFd; _acceptFd = INVALID_SOCKET; +#else + SOCKET fd = doAccept(_fd); #endif + if(_traceLevels->network >= 1) { Trace out(_logger, _traceLevels->networkCat); @@ -183,7 +182,8 @@ IceInternal::TcpAcceptor::effectivePort() const return getPort(_addr); } -IceInternal::TcpAcceptor::TcpAcceptor(const InstancePtr& instance, const string& host, int port, ProtocolSupport protocol) : +IceInternal::TcpAcceptor::TcpAcceptor(const InstancePtr& instance, const string& host, int port, + ProtocolSupport protocol) : _instance(instance), _traceLevels(instance->traceLevels()), _logger(instance->initializationData().logger), @@ -199,10 +199,13 @@ IceInternal::TcpAcceptor::TcpAcceptor(const InstancePtr& instance, const string& _backlog = instance->initializationData().properties->getPropertyAsIntWithDefault("Ice.TCP.Backlog", 511); #endif - _fd = createSocket(false, _addr.ss_family); + + _fd = createSocket(false, _addr); + #ifdef ICE_USE_IOCP _acceptBuf.resize((sizeof(sockaddr_storage) + 16) * 2); #endif + setBlock(_fd, false); setTcpBufSize(_fd, _instance->initializationData().properties, _logger); #ifndef _WIN32 @@ -220,12 +223,13 @@ IceInternal::TcpAcceptor::TcpAcceptor(const InstancePtr& instance, const string& // setReuseAddress(_fd, true); #endif + if(_traceLevels->network >= 2) { Trace out(_logger, _traceLevels->networkCat); out << "attempting to bind to tcp socket " << toString(); } - const_cast<struct sockaddr_storage&>(_addr) = doBind(_fd, _addr); + const_cast<Address&>(_addr) = doBind(_fd, _addr); } IceInternal::TcpAcceptor::~TcpAcceptor() @@ -235,3 +239,4 @@ IceInternal::TcpAcceptor::~TcpAcceptor() assert(_acceptFd == INVALID_SOCKET); #endif } + |