1 // ============================================================== 2 // This file is part of Glest (www.glest.org) 3 // 4 // Copyright (C) 2001-2008 Marti�o Figueroa 5 // 6 // You can redistribute this code and/or modify it under 7 // the terms of the GNU General Public License as published 8 // by the Free Software Foundation; either version 2 of the 9 // License, or (at your option) any later version 10 // ============================================================== 11 12 #include "network_interface.h" 13 14 #include <exception> 15 #include <cassert> 16 17 #include "types.h" 18 #include "conversion.h" 19 #include "platform_util.h" 20 21 #include "leak_dumper.h" 22 23 using namespace Shared::Platform; 24 using namespace Shared::Util; 25 using namespace std; 26 27 namespace Glest{ namespace Game{ 28 29 // ===================================================== 30 // class NetworkInterface 31 // ===================================================== 32 33 const int NetworkInterface::readyWaitTimeout= 60000; //1 minute 34 35 sendMessage(const NetworkMessage * networkMessage)36void NetworkInterface::sendMessage(const NetworkMessage* networkMessage){ 37 Socket* socket= getSocket(); 38 39 networkMessage->send(socket); 40 } 41 getNextMessageType()42NetworkMessageType NetworkInterface::getNextMessageType(){ 43 Socket* socket= getSocket(); 44 int8 messageType= nmtInvalid; 45 46 //peek message type 47 if(socket->getDataToRead()>=sizeof(messageType)){ 48 socket->peek(&messageType, sizeof(messageType)); 49 } 50 51 //sanity check new message type 52 if(messageType<0 || messageType>=nmtCount){ 53 throw runtime_error("Invalid message type: " + intToStr(messageType)); 54 } 55 56 return static_cast<NetworkMessageType>(messageType); 57 } 58 receiveMessage(NetworkMessage * networkMessage)59bool NetworkInterface::receiveMessage(NetworkMessage* networkMessage){ 60 Socket* socket= getSocket(); 61 62 return networkMessage->receive(socket); 63 } 64 isConnected()65bool NetworkInterface::isConnected(){ 66 return getSocket()!=NULL && getSocket()->isConnected(); 67 } 68 69 // ===================================================== 70 // class GameNetworkInterface 71 // ===================================================== 72 GameNetworkInterface()73GameNetworkInterface::GameNetworkInterface(){ 74 quit= false; 75 } 76 77 }}//end namespace 78