From 5e8277e923c5545a15bae7c740ab6afaa597a59f Mon Sep 17 00:00:00 2001 From: jackpoz Date: Fri, 22 Aug 2014 16:58:23 +0200 Subject: Core/Dependencies: Update G3D to v9.0 r4036 --- dep/g3dlite/source/NetworkDevice.cpp | 99 +++++++++++++++++++----------------- 1 file changed, 53 insertions(+), 46 deletions(-) (limited to 'dep/g3dlite/source/NetworkDevice.cpp') diff --git a/dep/g3dlite/source/NetworkDevice.cpp b/dep/g3dlite/source/NetworkDevice.cpp index 1fc794479f5..e9d4f112c5a 100644 --- a/dep/g3dlite/source/NetworkDevice.cpp +++ b/dep/g3dlite/source/NetworkDevice.cpp @@ -31,19 +31,18 @@ std::ostream& operator<<(std::ostream& os, const NetAddress& a) { static void logSocketInfo(const SOCKET& sock) { uint32 val; socklen_t sz = 4; - int ret; - ret = getsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char*)&val, (socklen_t*)&sz); + getsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char*)&val, (socklen_t*)&sz); logPrintf("SOL_SOCKET/SO_RCVBUF = %d\n", val); - ret = getsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char*)&val, (socklen_t*)&sz); + getsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char*)&val, (socklen_t*)&sz); logPrintf("SOL_SOCKET/SO_SNDBUF = %d\n", val); // Note: timeout = 0 means no timeout - ret = getsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char*)&val, (socklen_t*)&sz); + getsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char*)&val, (socklen_t*)&sz); logPrintf("SOL_SOCKET/SO_RCVTIMEO = %d\n", val); - ret = getsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char*)&val, (socklen_t*)&sz); + getsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char*)&val, (socklen_t*)&sz); logPrintf("SOL_SOCKET/SO_SNDTIMEO = %d\n", val); } @@ -63,7 +62,7 @@ static int selectOneReadSocket(const SOCKET& sock) { FD_ZERO(&socketSet); FD_SET(sock, &socketSet); - int ret = select(sock + 1, &socketSet, NULL, NULL, &timeout); + int ret = select((int)sock + 1, &socketSet, NULL, NULL, &timeout); return ret; } @@ -102,7 +101,7 @@ static int selectOneWriteSocket(const SOCKET& sock) { FD_ZERO(&socketSet); FD_SET(sock, &socketSet); - return select(sock + 1, NULL, &socketSet, NULL, &timeout); + return select((int)sock + 1, NULL, &socketSet, NULL, &timeout); } /////////////////////////////////////////////////////////////////////////////// @@ -146,7 +145,7 @@ std::string NetworkDevice::localHostName() const { return gethostbyname(ac)->h_name; } -#ifndef G3D_WIN32 +#ifndef G3D_WINDOWS const char* errnoToString() { switch (errno) { case EBADF: @@ -192,31 +191,31 @@ void NetworkDevice::EthernetAdapter::describe(TextOutput& t) const { t.writeNewline(); t.writeSymbols("hostname", "="); - t.writeString(hostname); + t.writeString(hostname + ";"); t.writeNewline(); t.writeSymbols("name", "="); - t.writeString(name); + t.writeString(name + ";"); t.writeNewline(); t.writeSymbols("ip", "="); - t.writeSymbol(formatIP(ip)); + t.writeSymbol("\"" + formatIP(ip) + "\";"); t.writeNewline(); t.writeSymbols("subnet", "="); - t.writeSymbol(formatIP(subnet)); + t.writeSymbol("\"" + formatIP(subnet) + "\";"); t.writeNewline(); t.writeSymbols("broadcast", "="); - t.writeSymbol(formatIP(broadcast)); + t.writeSymbol("\"" + formatIP(broadcast) + "\";"); t.writeNewline(); t.writeSymbols("mac", "="); - t.writeSymbol(formatMAC(mac)); + t.writeSymbol("\"" + formatMAC(mac) + "\";"); t.writeNewline(); t.popIndent(); - t.writeSymbol("}"); + t.writeSymbol("};"); t.writeNewline(); } @@ -243,15 +242,17 @@ std::string NetworkDevice::formatMAC(const uint8 MAC[6]) { } -#ifdef G3D_WIN32 +#ifdef G3D_WINDOWS bool NetworkDevice::init() { debugAssert(! initialized); logPrintf("Network Startup"); logPrintf("Starting WinSock networking.\n"); - WSADATA wsda; - WSAStartup(MAKEWORD(G3D_WINSOCK_MAJOR_VERSION, G3D_WINSOCK_MINOR_VERSION), &wsda); + +// G3D now initializes winsock through ENet +// WSADATA wsda; +// WSAStartup(MAKEWORD(G3D_WINSOCK_MAJOR_VERSION, G3D_WINSOCK_MINOR_VERSION), &wsda); std::string hostname = "localhost"; { @@ -280,7 +281,9 @@ bool NetworkDevice::init() { std::string machine = localHostName(); std::string addr = NetAddress(machine, 0).ipString(); + /* logPrintf( + "Network:\n" " Status: %s\n" " Loaded winsock specification version %d (%d is " @@ -293,6 +296,7 @@ bool NetworkDevice::init() { wsda.wHighVersion, wsda.iMaxSockets, wsda.iMaxUdpDg); + */ // TODO: WSAIoctl for subnet and broadcast addresses // http://msdn.microsoft.com/en-us/library/ms741621(VS.85).aspx @@ -449,7 +453,7 @@ bool NetworkDevice::init() { } // Extract all interesting adapters from the table - for (AdapterTable::Iterator it = table.begin(); it.hasMore(); ++it) { + for (AdapterTable::Iterator it = table.begin(); it.isValid(); ++it) { const EthernetAdapter& adapter = it->value; // Only add adapters that have IP addresses @@ -471,11 +475,10 @@ bool NetworkDevice::init() { void NetworkDevice::_cleanup() { debugAssert(initialized); - logPrintf("Network Cleanup"); -# ifdef G3D_WIN32 - WSACleanup(); +# ifdef G3D_WINDOWS + // Now handled through enet +// WSACleanup(); # endif - logPrintf("Network cleaned up."); } bool NetworkDevice::bind(SOCKET sock, const NetAddress& addr) const { @@ -497,7 +500,7 @@ bool NetworkDevice::bind(SOCKET sock, const NetAddress& addr) const { void NetworkDevice::closesocket(SOCKET& sock) const { if (sock != 0) { - #ifdef G3D_WIN32 + #ifdef G3D_WINDOWS ::closesocket(sock); #else close(sock); @@ -512,7 +515,7 @@ void NetworkDevice::closesocket(SOCKET& sock) const { void NetworkDevice::localHostAddresses(Array& array) const { array.resize(0); - char ac[128]; + char ac[256]; if (gethostname(ac, sizeof(ac)) == SOCKET_ERROR) { Log::common()->printf("Error while getting local host name\n"); @@ -606,13 +609,16 @@ static void increaseBufferSize(SOCKET sock) { ////////////////////////////////////////////////////////////////////////////// ReliableConduitRef ReliableConduit::create(const NetAddress& address) { - return new ReliableConduit(address); + return ReliableConduitRef(new ReliableConduit(address)); } -ReliableConduit::ReliableConduit( - const NetAddress& _addr) : state(NO_MESSAGE), receiveBuffer(NULL), - receiveBufferTotalSize(0), receiveBufferUsedSize(0) { +ReliableConduit::ReliableConduit + (const NetAddress& _addr) : + state(NO_MESSAGE), + receiveBuffer(NULL), + receiveBufferTotalSize(0), + receiveBufferUsedSize(0) { NetworkDevice* nd = NetworkDevice::instance(); @@ -829,7 +835,7 @@ uint32 ReliableConduit::waitingMessageType() { void ReliableConduit::sendBuffer(const BinaryOutput& b) { NetworkDevice* nd = NetworkDevice::instance(); - int ret = ::send(sock, (const char*)b.getCArray(), b.size(), 0); + int ret = ::send(sock, (const char*)b.getCArray(), (int)b.size(), 0); if (ret == SOCKET_ERROR) { Log::common()->println("Error occured while sending message."); @@ -938,11 +944,11 @@ void ReliableConduit::receiveIntoBuffer() { // Read the data itself int ret = 0; - uint32 left = messageSize - receiveBufferUsedSize; + uint32 left = messageSize - (uint32)receiveBufferUsedSize; int count = 0; while ((ret != SOCKET_ERROR) && (left > 0) && (count < 100)) { - ret = recv(sock, ((char*)receiveBuffer) + receiveBufferUsedSize, left, 0); + ret = recv(sock, ((char*)receiveBuffer) + (uint32)receiveBufferUsedSize, left, 0); if (ret > 0) { left -= ret; @@ -985,11 +991,12 @@ LightweightConduitRef LightweightConduit::create( bool enableReceive, bool enableBroadcast) { - return new LightweightConduit(receivePort, enableReceive, enableBroadcast); + return LightweightConduitRef(new LightweightConduit(receivePort, enableReceive, enableBroadcast)); } -LightweightConduit::LightweightConduit( - uint16 port, + +LightweightConduit::LightweightConduit + (uint16 port, bool enableReceive, bool enableBroadcast) { NetworkDevice* nd = NetworkDevice::instance(); @@ -1064,7 +1071,7 @@ bool LightweightConduit::receive(NetAddress& sender) { void LightweightConduit::sendBuffer(const NetAddress& a, BinaryOutput& b) { NetworkDevice* nd = NetworkDevice::instance(); - if (sendto(sock, (const char*)b.getCArray(), b.size(), 0, + if (sendto(sock, (const char*)b.getCArray(), (int)b.size(), 0, (struct sockaddr *) &(a.addr), sizeof(a.addr)) == SOCKET_ERROR) { Log::common()->printf("Error occured while sending packet " "to %s\n", inet_ntoa(a.addr.sin_addr)); @@ -1137,7 +1144,7 @@ uint32 LightweightConduit::waitingMessageType() { /////////////////////////////////////////////////////////////////////////////// NetListenerRef NetListener::create(const uint16 port) { - return new NetListener(port); + return NetListenerRef(new NetListener(port)); } @@ -1215,20 +1222,20 @@ ReliableConduitRef NetListener::waitForConnection() { Log::common()->println("Error in NetListener::acceptConnection."); Log::common()->println(socketErrorCode()); nd->closesocket(sock); - return NULL; + return ReliableConduitRef(); } Log::common()->printf("%s connected, transferred to socket %d.\n", inet_ntoa(remote_addr.sin_addr), sClient); - #ifndef G3D_WIN32 - return new ReliableConduit(sClient, + #ifndef G3D_WINDOWS + return ReliableConduitRef(new ReliableConduit(sClient, NetAddress(htonl(remote_addr.sin_addr.s_addr), - ntohs(remote_addr.sin_port))); + ntohs(remote_addr.sin_port)))); #else - return new ReliableConduit(sClient, + return ReliableConduitRef(ReliableConduitRef(new ReliableConduit(sClient, NetAddress(ntohl(remote_addr.sin_addr.S_un.S_addr), - ntohs(remote_addr.sin_port))); + ntohs(remote_addr.sin_port))))); #endif } @@ -1247,17 +1254,17 @@ bool NetListener::clientWaiting() const { void NetworkDevice::describeSystem( TextOutput& t) { - t.writeSymbols("Network", "{"); + t.writeSymbols("Network", "=", "{"); t.writeNewline(); t.pushIndent(); for (int i = 0; i < m_adapterArray.size(); ++i) { + t.printf("Adapter%d =", i); m_adapterArray[i].describe(t); } - t.popIndent(); - t.writeSymbols("}"); + t.writeSymbols("};"); t.writeNewline(); t.writeNewline(); } -- cgit v1.2.3