Changeset 7731 in orxonox.OLD for branches/network/src/lib/network/network_stream.cc
- Timestamp:
- May 19, 2006, 4:22:39 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/network/src/lib/network/network_stream.cc
r7701 r7731 412 412 offset += INTSIZE; 413 413 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 ); 415 415 offset += n; 416 416 … … 421 421 422 422 assert( peer->second.socket->writePacket( buf, offset ) ); 423 peer->second.sentStateTicks[currentState] = SDL_GetTicks(); 423 424 PRINTF(0)("send packet: %d userId = %d\n", offset, peer->second.userId); 424 425 } … … 461 462 assert( Converter::byteArrayToInt( buf + 2*INTSIZE, &fromState ) == INTSIZE ); 462 463 assert( Converter::byteArrayToInt( buf + 3*INTSIZE, &ackedState ) == INTSIZE ); 464 PRINTF(0)("ackedstate: %d\n", ackedState); 463 465 offset = 4*INTSIZE; 464 466 … … 475 477 continue; 476 478 } 477 479 478 480 while ( offset < length ) 479 481 { … … 485 487 486 488 Synchronizeable * sync = NULL; 487 489 488 490 for ( SynchronizeableList::iterator it = synchronizeables.begin(); it != synchronizeables.end(); it++ ) 489 491 { … … 495 497 } 496 498 } 497 499 498 500 if ( sync == NULL ) 499 501 { … … 503 505 continue; 504 506 } 505 507 506 508 //TODO dont accept new object from all peers (probably only servers) 507 509 int leafClassId; … … 511 513 continue; 512 514 } 513 515 514 516 Converter::byteArrayToInt( buf + offset, &leafClassId ); 515 517 … … 532 534 continue; 533 535 } 534 536 535 537 if ( b->isA(CL_SYNCHRONIZEABLE) ) 536 538 { … … 550 552 } 551 553 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 ); 553 555 } 554 556 555 557 if ( offset != length ) 556 558 { 559 PRINTF(0)("offset (%d) != length (%d)\n", offset, length); 557 560 peer->second.socket->disconnectServer(); 558 561 } 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 ); 559 585 560 586 peer->second.lastAckedState = ackedState; 587 peer->second.lastRecvedState = state; 588 561 589 } 562 590
Note: See TracChangeset
for help on using the changeset viewer.