Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jan 18, 2010, 12:05:57 AM (14 years ago)
Author:
scheusso
Message:

further traffic reduction:

  • synchronisableheaders are now smaller( by 2 bytes per header )
  • variableID of SynchronisableVariables are now uint8_t → max 256 synchronised variables per Synchronisable
File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/network2/src/libraries/network/synchronisable/Synchronisable.cc

    r6449 r6450  
    132132   * @return pointer to the newly created synchronisable
    133133   */
    134   Synchronisable *Synchronisable::fabricate(uint8_t*& mem, bool diffed, uint8_t mode)
     134  Synchronisable *Synchronisable::fabricate(uint8_t*& mem, uint8_t mode)
    135135  {
    136136    SynchronisableHeader header(mem);
     137    assert( !header.isDiffed() );
    137138
    138139    COUT(4) << "fabricating object with id: " << header.getObjectID() << std::endl;
     
    308309    if(syncList_.empty()){
    309310      assert(0);
    310       COUT(4) << "Synchronisable::updateData syncList_ is empty" << std::endl;
     311      COUT(2) << "Synchronisable::updateData syncList_ is empty" << std::endl;
    311312      return false;
    312313    }
     
    314315    uint8_t* data=mem;
    315316    // start extract header
    316     SynchronisableHeader syncHeader(mem);
    317     assert(syncHeader.getObjectID()==this->objectID_);
    318     assert(syncHeader.getCreatorID()==this->creatorID_);
    319     assert(syncHeader.getClassID()==this->classID_);
    320 
    321     mem += SynchronisableHeader::getSize();
    322     // stop extract header
     317    SynchronisableHeaderLight syncHeaderLight(mem);
     318    assert(syncHeaderLight.getObjectID()==this->getObjectID());
    323319
    324320    //COUT(5) << "Synchronisable: objectID_ " << syncHeader.getObjectID() << ", classID_ " << syncHeader.getClassID() << " size: " << syncHeader.getDataSize() << " synchronising data" << std::endl;
    325     if( !syncHeader.isDiffed() )
    326     {
     321    if( !syncHeaderLight.isDiffed() )
     322    {
     323      SynchronisableHeader syncHeader2(mem);
     324      assert( this->getClassID() == syncHeader2.getClassID() );
     325      assert( this->getCreatorID() == syncHeader2.getCreatorID() );
     326      mem += SynchronisableHeader::getSize();
    327327      std::vector<SynchronisableVariableBase *>::iterator i;
    328328      for(i=syncList_.begin(); i!=syncList_.end(); i++)
    329329      {
    330         assert( mem <= data+syncHeader.getDataSize()+SynchronisableHeader::getSize() ); // always make sure we don't exceed the datasize in our stream
     330        assert( mem <= data+syncHeader2.getDataSize()+SynchronisableHeader::getSize() ); // always make sure we don't exceed the datasize in our stream
    331331        (*i)->putData( mem, mode, forceCallback );
    332332      }
     333      assert(mem == data+syncHeaderLight.getDataSize()+SynchronisableHeader::getSize() );
    333334    }
    334335    else
    335336    {
    336       COUT(0) << "objectID: " << this->objectID_ << endl;
    337       while( mem < data+syncHeader.getDataSize()+SynchronisableHeader::getSize() )
     337      mem += SynchronisableHeaderLight::getSize();
     338//       COUT(0) << "objectID: " << this->objectID_ << endl;
     339      while( mem < data+syncHeaderLight.getDataSize()+SynchronisableHeaderLight::getSize() )
    338340      {
    339         uint32_t varID = *(uint32_t*)mem;
    340         COUT(0) << "varID: " << varID << endl;
    341         if( varID == 22 )
    342           COUT(6) << " blub " << endl;
     341        VariableID varID = *(VariableID*)mem;
     342//         COUT(0) << "varID: " << varID << endl;
    343343        assert( varID < syncList_.size() );
    344         mem += sizeof(uint32_t);
     344        mem += sizeof(VariableID);
    345345        syncList_[varID]->putData( mem, mode, forceCallback );
    346346      }
    347     }
    348     assert(mem == data+syncHeader.getDataSize()+SynchronisableHeader::getSize() );
     347      assert(mem == data+syncHeaderLight.getDataSize()+SynchronisableHeaderLight::getSize() );
     348    }
    349349    return true;
    350350  }
Note: See TracChangeset for help on using the changeset viewer.