Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Sep 8, 2008, 1:36:32 AM (16 years ago)
Author:
scheusso
Message:

further fixes (diff/undiff not working yet)

Location:
code/branches/network/src/network/packet
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • code/branches/network/src/network/packet/Acknowledgement.cc

    r1735 r1739  
    4545  data_=new unsigned char[ getSize() ];
    4646  *(ENUM::Type *)(data_ + _PACKETID ) = ENUM::Acknowledgement;
    47   *(unsigned int *)&data_[ _ACKID ] = id;
     47  *(unsigned int *)(data_ + _ACKID ) = id;
    4848  clientID_=clientID;
    4949}
  • code/branches/network/src/network/packet/Gamestate.cc

    r1735 r1739  
    120120bool Gamestate::spreadData(int mode)
    121121{
    122   assert(data_ && !HEADER->compressed && !HEADER->diffed);
     122  assert(data_);
     123  assert(!HEADER->compressed);
     124  assert(!HEADER->diffed);
    123125  unsigned int size, objectID, classID;
    124126  unsigned char *mem=data_+sizeof(GamestateHeader);
     
    141143        //fabricate the new synchronisable
    142144        if(!Synchronisable::fabricate(mem, mode))
    143           /*return false*/;
     145          return false;
    144146        it=orxonox::ObjectList<Synchronisable>::end();
    145147      }
     
    276278  *GAMESTATE_HEADER(ndata) = *HEADER;
    277279  GAMESTATE_HEADER(ndata)->diffed = true;
     280  GAMESTATE_HEADER(ndata)->base_id = base->getID();
    278281  Gamestate *g = new Gamestate(ndata, 0);
     282  g->flags_=flags_;
     283  g->packetDirection_ = packetDirection_;
     284  g->clientID_ = clientID_;
    279285  return g;
    280286}
     
    310316  GAMESTATE_HEADER(ndata)->diffed = false;
    311317  Gamestate *g = new Gamestate(ndata, 0);
     318  g->flags_=flags_;
     319  g->packetDirection_ = packetDirection_;
     320  g->clientID_ = clientID_;
     321  assert(!g->isDiffed());
     322  assert(!g->isCompressed());
    312323  return g;
    313324}
     
    341352  }
    342353 
     354  bool Gamestate::isCompressed(){
     355    return HEADER->compressed;
     356  }
     357 
    343358  int Gamestate::getBaseID(){
    344359    return HEADER->base_id;
  • code/branches/network/src/network/packet/Gamestate.h

    r1735 r1739  
    6464    int getID();
    6565    bool isDiffed();
     66    bool isCompressed();
    6667    int getBaseID();
    6768    Gamestate *diff(Gamestate *base);
  • code/branches/network/src/network/packet/Packet.cc

    r1735 r1739  
    113113    packetMap_[enetPacket_] = this;
    114114  }
    115   /*switch( *(ENUM::Type *)(data_ + _PACKETID) )
     115#ifndef NDEBUG
     116  switch( *(ENUM::Type *)(data_ + _PACKETID) )
    116117  {
    117118    case ENUM::Acknowledgement:
     
    120121    case ENUM::Gamestate:
    121122    case ENUM::Welcome:
    122       COUT(3) << "welcome" << std::endl;
    123       p = new Welcome( data, clientID );
     123      break;
    124124    default:
    125125      assert(0); //TODO: repair this
    126126      break;
    127   }*/
     127  }
     128#endif
    128129  network::Host::addPacket( enetPacket_, clientID_);
    129130  enetPacket_ = 0; // otherwise we have a double free because enet already handles the deallocation of the packet
  • code/branches/network/src/network/packet/Packet.h

    r1735 r1739  
    7878    enet_uint32 flags_;
    7979    int clientID_;
     80    ENUM::Direction packetDirection_;
    8081    unsigned char *data_;
    8182  private:
    8283    static std::map<ENetPacket *, Packet *> packetMap_;
    8384    ENetPacket *enetPacket_;
    84     ENUM::Direction packetDirection_;
    8585};
    8686
Note: See TracChangeset for help on using the changeset viewer.