Changeset 2355
- Timestamp:
- Dec 8, 2008, 8:36:27 PM (16 years ago)
- Location:
- code/branches/network64/src
- Files:
-
- 2 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/network64/src/network/CMakeLists.txt
r2211 r2355 11 11 PacketBuffer.cc 12 12 Server.cc 13 TrafficControl.cc 13 14 Host.cc 14 15 ) -
code/branches/network64/src/network/ClientInformation.cc
r2171 r2355 45 45 namespace orxonox 46 46 { 47 47 48 48 49 ClientInformation *ClientInformation::head_=0; -
code/branches/network64/src/network/ClientInformation.h
r2171 r2355 46 46 #include <boost/thread/recursive_mutex.hpp> 47 47 48 48 49 // WATCH OUT: THE CLIENTINFORMATION LIST IS NOT THREADSAFE ANYMORE 49 50 50 51 namespace orxonox 51 52 { 52 static const unsigned int GAMESTATEID_INITIAL = (unsigned int)-1;53 static const unsigned int CLIENTID_UNKNOWN = (unsigned int)-2;54 53 55 54 /** -
code/branches/network64/src/network/GamestateManager.cc
r2309 r2355 137 137 if(!reference) 138 138 return 0; 139 gs = reference->doSelection(clientID); 140 // gs = new packet::Gamestate(*reference); 139 gs = reference->doSelection(clientID, 10000); 141 140 // gs = new packet::Gamestate(*reference); 142 141 // save the (undiffed) gamestate in the clients gamestate map -
code/branches/network64/src/network/NetworkPrereqs.h
r2309 r2355 57 57 58 58 //----------------------------------------------------------------------- 59 // Includes 60 //----------------------------------------------------------------------- 61 #include "util/Math.h" 62 63 64 //----------------------------------------------------------------------- 59 65 // Forward declarations 60 66 //----------------------------------------------------------------------- 61 67 namespace orxonox 62 68 { 69 70 // Constants definition 71 72 static const unsigned int GAMESTATEID_INITIAL = (unsigned int)-1; 73 static const unsigned int CLIENTID_UNKNOWN = (unsigned int)-2; 74 static const uint32_t OBJECTID_UNKNOWN = static_cast<uint32_t>(-1); 75 static const unsigned int SCHED_PRIORITY_OFFSET = -5; 76 77 78 79 63 80 class Client; 64 81 class ClientConnection; … … 84 101 struct QueueItem; 85 102 struct syncData; 103 class obj; 104 class objInfo; 86 105 namespace packet{ 87 106 class Gamestate; -
code/branches/network64/src/network/packet/Gamestate.cc
r2309 r2355 28 28 29 29 #include "Gamestate.h" 30 #include "network/ClientInformation.h" 31 #include "network/GamestateHandler.h" 30 #include "../GamestateHandler.h" 31 #include "../synchronisable/Synchronisable.h" 32 #include "../TrafficControl.h" 32 33 #include "core/CoreIncludes.h" 33 34 #include "core/Iterator.h" … … 48 49 49 50 #define PACKET_FLAG_GAMESTATE ENET_PACKET_FLAG_RELIABLE 51 52 TrafficControl Gamestate::trafficControl_; 50 53 51 54 Gamestate::Gamestate() … … 109 112 110 113 //if(it->doSelection(id)) 111 dataMap_[mem-data_]=(*it); // save the mem location of the synchronisable data 114 if(tempsize!=0) 115 dataMap_.push_back( obj(it->getObjectID(), it->getCreatorID(), tempsize, mem-data_) ); 116 // dataMap_[mem-data_]=(*it); // save the mem location of the synchronisable data 112 117 if(!it->getData(mem, id, mode)) 113 118 return false; // mem pointer gets automatically increased because of call by reference … … 148 153 if(!s) 149 154 { 150 Synchronisable::fabricate(mem, mode); 155 s = Synchronisable::fabricate(mem, mode); 156 if(s==0) 157 assert(0); 158 // COUT(0) << "could not fabricate synchronisable: " << objectheader->objectID << " classid: " << objectheader->classID << " creator: " << objectheader->creatorID << endl; 159 // else 160 // COUT(0) << "fabricated: " << objectheader->objectID << " classid: " << objectheader->classID << " creator: " << objectheader->creatorID << endl; 151 161 } 152 162 else … … 332 342 } 333 343 334 Gamestate* Gamestate::doSelection(unsigned int clientID ){344 Gamestate* Gamestate::doSelection(unsigned int clientID, unsigned int targetSize){ 335 345 assert(data_); 336 std:: map<uint32_t, Synchronisable *>::iterator it;346 std::list<obj>::iterator it; 337 347 338 348 // allocate memory for new data … … 341 351 Gamestate *gs = new Gamestate(gdata); 342 352 uint8_t *newdata = gdata + sizeof(GamestateHeader); 343 uint8_t *origdata = GAMESTATE_START(data_);353 // uint8_t *origdata = GAMESTATE_START(data_); 344 354 345 355 //copy the GamestateHeader … … 348 358 synchronisableHeader *oldobjectheader, *newobjectheader; 349 359 uint32_t objectOffset; 350 360 unsigned int objectsize, destsize=0; 361 Synchronisable *object; 362 363 //call TrafficControl 364 trafficControl_.processObjectList( clientID, HEADER->id, &dataMap_ ); 365 351 366 //copy in the zeros 352 367 for(it=dataMap_.begin(); it!=dataMap_.end(); it++){ 353 oldobjectheader = (synchronisableHeader*) origdata;368 oldobjectheader = (synchronisableHeader*)(data_ + (*it).objDataOffset); 354 369 newobjectheader = (synchronisableHeader*)newdata; 355 uint32_t objectsize = oldobjectheader->size; 356 assert(it->second->objectID==oldobjectheader->objectID); 370 object = Synchronisable::getSynchronisable( (*it).objID ); 371 assert(object->objectID == oldobjectheader->objectID); 372 objectsize = oldobjectheader->size; 357 373 *newobjectheader = *oldobjectheader; 358 374 objectOffset=sizeof(synchronisableHeader); //skip the size and the availableData variables in the objectheader 359 if (it->second->doSelection(HEADER->id)){375 if ( /*object->doSelection(HEADER->id)*/true ){ 360 376 assert(newobjectheader->dataAvailable==true); 361 memcpy(newdata+objectOffset, origdata+objectOffset, objectsize-objectOffset);377 memcpy(newdata+objectOffset, data_ + (*it).objDataOffset + objectOffset, objectsize-objectOffset); 362 378 }else{ 363 379 newobjectheader->dataAvailable=false; … … 366 382 } 367 383 newdata += objectsize; 368 origdata += objectsize; 369 } 384 destsize += objectsize; 385 // origdata += objectsize; 386 } 387 ((GamestateHeader*)gdata)->datasize = destsize; 388 assert(destsize!=0); 370 389 return gs; 371 390 } … … 382 401 383 402 //preparations 384 std:: map<uint32_t, Synchronisable *>::iterator it;403 std::list<obj>::iterator it; 385 404 uint8_t *origdata, *basedata, *destdata, *ndata; 386 405 uint32_t objectOffset, streamOffset=0; //data offset … … 388 407 synchronisableHeader *origheader; 389 408 synchronisableHeader *destheader; 409 Synchronisable *object; 390 410 391 411 origdata = GAMESTATE_START(this->data_); … … 397 417 for(it=dataMap_.begin(); it!=dataMap_.end(); it++){ 398 418 assert(streamOffset<HEADER->datasize); 399 bool sendData = it->second->doSelection(HEADER->id);400 419 origheader = (synchronisableHeader *)(origdata+streamOffset); 401 420 destheader = (synchronisableHeader *)(destdata+streamOffset); 421 object = Synchronisable::getSynchronisable(origheader->objectID); 422 bool sendData = object->doSelection(HEADER->id); 402 423 403 424 //copy and partially diff the object header … … 450 471 451 472 //preparations 452 std:: map<uint32_t, Synchronisable *>::iterator it;473 std::list<obj>::iterator it; 453 474 uint8_t *origdata, *basedata, *destdata, *ndata; 454 475 uint32_t objectOffset, streamOffset=0; //data offset … … 456 477 synchronisableHeader *origheader; 457 478 synchronisableHeader *destheader; 479 Synchronisable *object; 458 480 459 481 origdata = GAMESTATE_START(this->data_); … … 467 489 origheader = (synchronisableHeader *)(origdata+streamOffset); 468 490 destheader = (synchronisableHeader *)(destdata+streamOffset); 491 object = Synchronisable::getSynchronisable( origheader->objectID ); 469 492 bool sendData; 470 493 -
code/branches/network64/src/network/packet/Gamestate.h
r2309 r2355 31 31 #define NETWORK_PACKETGAMESTATE_H 32 32 33 #include " ../NetworkPrereqs.h"33 #include "network/NetworkPrereqs.h" 34 34 35 35 #include "Packet.h" 36 #include "network/synchronisable/Synchronisable.h" 36 #include "network/TrafficControl.h" 37 #include "core/CoreIncludes.h" 37 38 #include <map> 39 #include <list> 38 40 #ifndef NDEBUG 39 41 #include "util/CRC32.h" … … 79 81 Gamestate *undiff(Gamestate *base); 80 82 Gamestate* intelligentUnDiff(Gamestate *base); 81 Gamestate* doSelection(unsigned int clientID );83 Gamestate* doSelection(unsigned int clientID, unsigned int targetSize); 82 84 bool compressData(); 83 85 bool decompressData(); … … 92 94 uint32_t calcGamestateSize(int32_t id, uint8_t mode=0x0); 93 95 void removeObject(ObjectListIterator<Synchronisable> &it); 94 std::map<uint32_t, Synchronisable*> dataMap_; 96 std::list<obj> dataMap_; 97 static TrafficControl trafficControl_; 95 98 }; 96 99 -
code/branches/network64/src/network/synchronisable/Synchronisable.cc
r2316 r2355 53 53 namespace orxonox 54 54 { 55 56 55 57 56 std::map<uint32_t, Synchronisable *> Synchronisable::objectMap_; -
code/branches/network64/src/network/synchronisable/Synchronisable.h
r2309 r2355 53 53 namespace orxonox 54 54 { 55 static const uint32_t OBJECTID_UNKNOWN = static_cast<uint32_t>(-1);56 55 57 56 namespace objectDirection{ … … 92 91 93 92 inline uint32_t getObjectID(){return objectID;} 93 inline unsigned int getCreatorID(){return creatorID;} 94 94 inline uint32_t getClassID(){return classID;} 95 inline unsigned int getPriority(){ return objectFrequency_;} 96 95 97 protected: 96 98 Synchronisable(BaseObject* creator); … … 99 101 template <class T> void unregisterVariable(T& var); 100 102 void setObjectMode(uint8_t mode); 101 void setObject Frequency(unsigned int freq){ objectFrequency_ = freq; }103 void setObjectPriority(unsigned int freq){ objectFrequency_ = freq; } 102 104 103 105 -
code/branches/network64/src/orxonox/objects/worldentities/Model.cc
r2245 r2355 40 40 Model::Model(BaseObject* creator) : PositionableEntity(creator) 41 41 { 42 static unsigned int i=10; 42 43 RegisterObject(Model); 43 44 44 45 this->registerVariables(); 46 this->setObjectPriority(i++); 45 47 } 46 48
Note: See TracChangeset
for help on using the changeset viewer.