int run(void* taskArg)
      {
         char mynum[3];
         sprintf(mynum, "%02d", getUserData());
         UtlString startMsg("  start  ");
         UtlString finishMsg("  finish ");
         startMsg.append(mynum);
         finishMsg.append(mynum);

         timer.addEvent(startMsg.data());
         doListOperations();
         timer.addEvent(finishMsg.data());
         return 0;
      }
Example #2
0
/*
================
sdStatsTracker::ProcessRemoteStats
================
*/
void sdStatsTracker::ProcessRemoteStats( int playerIndex ) {
	const int MAX_SINGLE_SEND_COUNT = 30;

	int numLeft = stats.Num() - playerRequestState[ playerIndex ];
	int numSend = Min( numLeft, MAX_SINGLE_SEND_COUNT );

	sdNetStatKeyValList list;
	int start = playerRequestState[ playerIndex ];
	int nextStatToWrite = start;

	for ( int i = 0; start + i < stats.Num() && list.Num() < numSend; i++ ) {
		int index = start + i;
		stats[ index ]->Write( list, playerIndex, true );
		nextStatToWrite = index + 1;
	}

	sdReliableServerMessage msg( GAME_RELIABLE_SMESSAGE_STATSMESSAGE );
	msg.WriteLong( list.Num() );
	for ( int i = 0; i < list.Num(); i++ ) {
		msg.WriteString( list[ i ].key->c_str() );
		msg.WriteByte( list[ i ].type );
		switch ( list[ i ].type ) {
			case sdNetStatKeyValue::SVT_INT:
			case sdNetStatKeyValue::SVT_INT_MAX:
				msg.WriteLong( list[ i ].val.i );
				break;
			case sdNetStatKeyValue::SVT_FLOAT:
			case sdNetStatKeyValue::SVT_FLOAT_MAX:
				msg.WriteFloat( list[ i ].val.f );
				break;
		}
	}

	msg.Send( sdReliableMessageClientInfo( playerIndex ) );

	playerRequestState[ playerIndex ] = nextStatToWrite;
	if ( playerRequestState[ playerIndex ] == stats.Num() ) {
		sdReliableServerMessage finishMsg( GAME_RELIABLE_SMESSAGE_STATSFINIHED );
		finishMsg.WriteBool( true );
		finishMsg.Send( sdReliableMessageClientInfo( playerIndex ) );

		playerRequestState[ playerIndex ] = -1;
	}
}