[Orxonox-commit 3723] r8403 - code/trunk/src/libraries/network
scheusso at orxonox.net
scheusso at orxonox.net
Thu May 5 16:02:40 CEST 2011
Author: scheusso
Date: 2011-05-05 16:02:40 +0200 (Thu, 05 May 2011)
New Revision: 8403
Modified:
code/trunk/src/libraries/network/FunctionCallManager.cc
code/trunk/src/libraries/network/Host.cc
code/trunk/src/libraries/network/Host.h
Log:
fixing possible bug with packet ordering
Modified: code/trunk/src/libraries/network/FunctionCallManager.cc
===================================================================
--- code/trunk/src/libraries/network/FunctionCallManager.cc 2011-05-05 13:40:12 UTC (rev 8402)
+++ code/trunk/src/libraries/network/FunctionCallManager.cc 2011-05-05 14:02:40 UTC (rev 8403)
@@ -30,6 +30,8 @@
#include "packet/FunctionCalls.h"
#include "core/GameMode.h"
#include "GamestateHandler.h"
+#include "Host.h"
+#include "util/OrxAssert.h"
namespace orxonox {
@@ -174,7 +176,8 @@
std::vector<std::pair<FunctionCall, std::pair<uint32_t, uint32_t> > >::iterator it = FunctionCallManager::sIncomingFunctionCallBuffer_.begin();
while( it!=FunctionCallManager::sIncomingFunctionCallBuffer_.end() )
{
- if( it->first.execute() )
+ OrxAssert( Host::getActiveInstance(), "No Host class existing" );
+ if( it->second.first <= Host::getActiveInstance()->getLastReceivedGamestateID(it->second.second) && it->first.execute() )
FunctionCallManager::sIncomingFunctionCallBuffer_.erase(it);
else
{
Modified: code/trunk/src/libraries/network/Host.cc
===================================================================
--- code/trunk/src/libraries/network/Host.cc 2011-05-05 13:40:12 UTC (rev 8402)
+++ code/trunk/src/libraries/network/Host.cc 2011-05-05 14:02:40 UTC (rev 8403)
@@ -160,5 +160,17 @@
}
return false;
}
+
+ Host* Host::getActiveInstance()
+ {
+ std::vector<Host*>::iterator it = Host::instances_s.begin();
+ while( it != Host::instances_s.end() )
+ {
+ if( (*it)->isActive() )
+ return *it;
+ }
+ return 0;
+ }
+
}//namespace orxonox
Modified: code/trunk/src/libraries/network/Host.h
===================================================================
--- code/trunk/src/libraries/network/Host.h 2011-05-05 13:40:12 UTC (rev 8402)
+++ code/trunk/src/libraries/network/Host.h 2011-05-05 14:02:40 UTC (rev 8403)
@@ -70,7 +70,7 @@
// static Host *instance_;
public:
-// static Host* getInstance(){ return instance_; }
+ static Host* getActiveInstance();
static bool running(){ return instances_s.size(); }
static void addPacket(ENetPacket* packet, int clientID = NETWORK_PEER_ID_SERVER, uint8_t channelID = 0);
//static bool chat(std::string& message);
More information about the Orxonox-commit
mailing list