Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 22, 2008, 2:02:06 PM (16 years ago)
Author:
rgrieder
Message:

merged merge branch back to trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/trunk/src/network/PacketBuffer.cc

    r1293 r1360  
    4141namespace network
    4242{
    43   boost::mutex networkPacketBufferMutex;
     43   boost::recursive_mutex PacketBuffer::mutex_;
    4444
    4545  PacketBuffer::PacketBuffer() {
     
    5252
    5353  bool PacketBuffer::push(ENetEvent *ev) {
    54     boost::mutex::scoped_lock lock(networkPacketBufferMutex);
     54    boost::recursive_mutex::scoped_lock lock(mutex_);
    5555    //std::cout << "event size inside packetbuffer " << ev->packet->dataLength << std::endl;
    5656    //   if(closed)
     
    6161      last=first;
    6262      last->next=NULL;
    63       // change this!!!!!!!
     63      // change this!!!!!!!  ---- we are not doing stl so we won't change this
    6464      last->packet = ev->packet;
     65      last->address = ev->peer->address;
    6566      //last->address = ev->peer->address;
    6667    } else {
     
    7273      // save the packet to the new element
    7374      last->packet = ev->packet;
     75      last->address = ev->peer->address;
    7476      //last->address = ev->peer->address;
    7577    }
    76     // pseudo bugfix: added a return false statement for error handling
    77     if ( last->packet == ev->packet ) return true;
    78     return false;
     78    lock.unlock();
     79    return true;
    7980  }
    8081
     
    8283  //moving first pointer to next element
    8384  ENetPacket *PacketBuffer::pop() {
    84     boost::mutex::scoped_lock lock(networkPacketBufferMutex);
    85     //std::cout << "packetbuffer pop" << std::endl;
    86     if(first!=NULL /*&& !closed*/){
    87       QueueItem *temp = first;
    88       // get packet
    89       ENetPacket *pck=first->packet;
    90       // remove first element
    91       first = first->next;
    92       delete temp;
    93       //std::cout << "pop size of packet " << pck->dataLength << std::endl;
    94       return pck;
    95     } else{
    96       //std::cout << "nothing to return" << std::endl;
    97       return NULL;
    98     }
     85    ENetAddress address;
     86    return pop(address);
    9987  }
    10088
    10189  ENetPacket *PacketBuffer::pop(ENetAddress &address) {
    102     boost::mutex::scoped_lock lock(networkPacketBufferMutex);
     90    boost::recursive_mutex::scoped_lock lock(mutex_);
    10391    //std::cout << "packetbuffer pop(address)" << std::endl;
    10492    if(first!=NULL /*&& !closed*/){
     
    11098      first = first->next;
    11199      delete temp;
     100      lock.unlock();
    112101      //std::cout << "pop(address) size of packet " << pck->dataLength << std::endl;
    113102      return pck;
    114103    } else{
     104      lock.unlock();
    115105      return NULL;
    116106    }
Note: See TracChangeset for help on using the changeset viewer.