Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 19, 2006, 4:22:39 PM (18 years ago)
Author:
rennerc
Message:

fixed bug

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/network/src/lib/network/network_stream.cc

    r7701 r7731  
    412412      offset += INTSIZE;
    413413
    414       n = sync.getStateDiff( peer->second.userId, buf + offset, UDP_PACKET_SIZE-offset, currentState, peer->second.lastAckedState, 0 );
     414      n = sync.getStateDiff( peer->second.userId, buf + offset, UDP_PACKET_SIZE-offset, currentState, peer->second.lastAckedState, -1000 );
    415415      offset += n;
    416416     
     
    421421   
    422422    assert( peer->second.socket->writePacket( buf, offset ) );
     423    peer->second.sentStateTicks[currentState] = SDL_GetTicks();
    423424    PRINTF(0)("send packet: %d userId = %d\n", offset, peer->second.userId);
    424425  }
     
    461462      assert( Converter::byteArrayToInt( buf + 2*INTSIZE, &fromState ) == INTSIZE );
    462463      assert( Converter::byteArrayToInt( buf + 3*INTSIZE, &ackedState ) == INTSIZE );
     464      PRINTF(0)("ackedstate: %d\n", ackedState);
    463465      offset = 4*INTSIZE;
    464466
     
    475477        continue;
    476478      }
    477 
     479     
    478480      while ( offset < length )
    479481      {
     
    485487     
    486488        Synchronizeable * sync = NULL;
    487      
     489       
    488490        for ( SynchronizeableList::iterator it = synchronizeables.begin(); it != synchronizeables.end(); it++ )
    489491        {
     
    495497          }
    496498        }
    497      
     499       
    498500        if ( sync == NULL )
    499501        {
     
    503505            continue;
    504506          }
    505        
     507
    506508        //TODO dont accept new object from all peers (probably only servers)
    507509          int leafClassId;
     
    511513            continue;
    512514          }
    513        
     515
    514516          Converter::byteArrayToInt( buf + offset, &leafClassId );
    515517       
     
    532534            continue;
    533535          }
    534        
     536
    535537          if ( b->isA(CL_SYNCHRONIZEABLE) )
    536538          {
     
    550552        }
    551553
    552         offset += sync->setStateDiff( peer->second.userId, buf+offset, length-offset, state, fromState );
     554        offset += sync->setStateDiff( peer->second.userId, buf+offset, syncDataLength, state, fromState );
    553555      }
    554    
     556     
    555557      if ( offset != length )
    556558      {
     559        PRINTF(0)("offset (%d) != length (%d)\n", offset, length);
    557560        peer->second.socket->disconnectServer();
    558561      }
     562     
     563      if ( peer->second.sentStateTicks.find( ackedState ) != peer->second.sentStateTicks.end() )
     564      {
     565        peer->second.ackDelay.push_back( SDL_GetTicks() - peer->second.sentStateTicks[ackedState] );
     566      }
     567     
     568      while ( peer->second.sentStateTicks.begin()->first <= ackedState )
     569        peer->second.sentStateTicks.erase( peer->second.sentStateTicks.begin() );
     570     
     571      while ( peer->second.ackDelay.size() > 20 )
     572        peer->second.ackDelay.erase( peer->second.ackDelay.begin() );
     573     
     574      peer->second.ping = 0;
     575     
     576      for ( std::list<int>::iterator it = peer->second.ackDelay.begin(); it != peer->second.ackDelay.end(); it++ )
     577        peer->second.ping += *it;
     578     
     579      if ( peer->second.ackDelay.size() == 0 )
     580        peer->second.ping = -1;
     581      else
     582        peer->second.ping /= peer->second.ackDelay.size();
     583     
     584      PRINTF(0)("PING: user: %d ping: %d\n", peer->second.userId, peer->second.ping );
    559585   
    560586      peer->second.lastAckedState = ackedState;
     587      peer->second.lastRecvedState = state;
     588     
    561589    }
    562590 
Note: See TracChangeset for help on using the changeset viewer.