Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 21, 2007, 6:08:34 PM (16 years ago)
Author:
scheusso
Message:

synchronisable

File:
1 edited

Legend:

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

    r230 r237  
    1616Synchronisable::Synchronisable()
    1717{
     18  registerAllVariables();
    1819}
    1920
     
    2122Synchronisable::~Synchronisable()
    2223{
     24 
    2325}
    2426
     27void Synchronisable::registerVar(const void *var, int size){
     28  synchronisableVariable temp={size, var};
     29  syncList.push_back(temp);
     30}
     31syncData Synchronisable::getData(){
     32  std::list<synchronisableVariable>::iterator i;
     33  int totalsize=0;
     34  //figure out size of data to be allocated
     35  for(i=syncList.begin(); i!=syncList.end(); i++){
     36    // increase size (size of variable and size of size of variable ;)
     37    totalsize+=sizeof(int)+i->size;
     38  }
     39  syncData retVal;
     40  retVal.objectID=this->objectID;
     41  retVal.classID=this->classID;
     42  retVal.length=totalsize;
     43  // allocate memory
     44  retVal.data = (unsigned char *)malloc(totalsize);
     45  // copy to location
     46  for(int n=0, i=syncList.begin(); n<totalsize && i!=syncList.end(); i++){
     47    std::memcpy(retVal.data+n, i->size, sizeof(int));
     48    n+=sizeof(int);
     49    std::memcpy(retVal.data+n, *(*i.var), *i.size);
     50    n+=i->size;
     51  }
     52  return retVal;
     53}
     54bool Synchronisable::updateData(syncData vars){
     55  unsigned char *data=vars.data;
     56  std::list<synchronisableVariable>::iterator i;
     57  for(i=syncList.begin(); i!=syncList.end(); i++){
     58    if((int)*data==i->size){
     59      data+=sizeof(int);
     60      memcpy(i->data, data, i->size);
     61      data+=i->size;
     62    } else
     63      return false; //there was some problem with registerVar
     64  }
     65}
    2566
    2667}
Note: See TracChangeset for help on using the changeset viewer.