improving synchronization protocol
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/hilnius@13253 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
dec7a74c99
commit
9bf6dde4f3
@ -134,8 +134,6 @@ void ProtocolManager::sendMessageExcept(Protocol* sender, STKPeer* peer, const N
|
|||||||
|
|
||||||
uint32_t ProtocolManager::requestStart(Protocol* protocol)
|
uint32_t ProtocolManager::requestStart(Protocol* protocol)
|
||||||
{
|
{
|
||||||
if (!protocol)
|
|
||||||
return;
|
|
||||||
// create the request
|
// create the request
|
||||||
ProtocolRequest req;
|
ProtocolRequest req;
|
||||||
ProtocolInfo info;
|
ProtocolInfo info;
|
||||||
|
@ -66,11 +66,14 @@ void SynchronizationProtocol::notifyEvent(Event* event)
|
|||||||
response.ai8(event->data.gui8(talk_id)).ai32(token).ai8(0).ai32(sequence);
|
response.ai8(event->data.gui8(talk_id)).ai32(token).ai8(0).ai32(sequence);
|
||||||
m_listener->sendMessage(this, peers[talk_id], response, false);
|
m_listener->sendMessage(this, peers[talk_id], response, false);
|
||||||
Log::verbose("SynchronizationProtocol", "Answering sequence %u", sequence);
|
Log::verbose("SynchronizationProtocol", "Answering sequence %u", sequence);
|
||||||
if (event->data.size() == 12 && !m_listener->isServer()) // countdown time in the message
|
if (event->data.size() == 14 && !m_listener->isServer()) // countdown time in the message
|
||||||
{
|
{
|
||||||
short time_to_start = event->data.gui16(10);
|
int time_to_start = event->data.gui32(10);
|
||||||
Log::info("SynchronizationProtocol", "Request to start game in %d.", time_to_start);
|
Log::info("SynchronizationProtocol", "Request to start game in %d.", time_to_start);
|
||||||
startCountdown(time_to_start);
|
if (!m_countdown_activated)
|
||||||
|
startCountdown(time_to_start);
|
||||||
|
else
|
||||||
|
m_countdown = (double)(time_to_start/1000.0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Log::verbose("SynchronizationProtocol", "No countdown for now.");
|
Log::verbose("SynchronizationProtocol", "No countdown for now.");
|
||||||
@ -89,7 +92,7 @@ void SynchronizationProtocol::notifyEvent(Event* event)
|
|||||||
m_successed_pings[peer_id]++;
|
m_successed_pings[peer_id]++;
|
||||||
m_average_ping[peer_id] = (int)((m_total_diff[peer_id]/m_successed_pings[peer_id])*1000.0);
|
m_average_ping[peer_id] = (int)((m_total_diff[peer_id]/m_successed_pings[peer_id])*1000.0);
|
||||||
|
|
||||||
Log::verbose("SynchronizationProtocol", "Ping is %u", m_average_ping[peer_id]);
|
Log::info("SynchronizationProtocol", "Ping is %u", m_average_ping[peer_id]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,10 +124,11 @@ void SynchronizationProtocol::asynchronousUpdate()
|
|||||||
NetworkString ns;
|
NetworkString ns;
|
||||||
ns.ai8(i).addUInt32(peers[i]->getClientServerToken()).addUInt8(1).addUInt32(m_pings[i].size());
|
ns.ai8(i).addUInt32(peers[i]->getClientServerToken()).addUInt8(1).addUInt32(m_pings[i].size());
|
||||||
// now add the countdown if necessary
|
// now add the countdown if necessary
|
||||||
if (m_countdown_activated)
|
if (m_countdown_activated && m_listener->isServer())
|
||||||
{
|
{
|
||||||
ns.ai16((int)(m_countdown*1000.0));
|
ns.ai32((int)(m_countdown*1000.0));
|
||||||
Log::info("SynchronizationProtocol", "CNTActivated: Countdown value : %f", m_countdown);
|
Log::info("SynchronizationProtocol", "CNTActivated: Countdown value : %f", m_countdown);
|
||||||
|
Log::info("SynchronizationProtocol", "Sent integer %d", (int)(ns.getUInt32(10)));
|
||||||
}
|
}
|
||||||
Log::verbose("SynchronizationProtocol", "Added sequence number %u for peer %d", m_pings[i].size(), i);
|
Log::verbose("SynchronizationProtocol", "Added sequence number %u for peer %d", m_pings[i].size(), i);
|
||||||
timer = current_time;
|
timer = current_time;
|
||||||
@ -143,5 +147,5 @@ void SynchronizationProtocol::startCountdown(int ms_countdown)
|
|||||||
m_countdown_activated = true;
|
m_countdown_activated = true;
|
||||||
m_countdown = (double)(ms_countdown)/1000.0;
|
m_countdown = (double)(ms_countdown)/1000.0;
|
||||||
m_last_countdown_update = Time::getRealTime();
|
m_last_countdown_update = Time::getRealTime();
|
||||||
Log::info("SynchronizationProtocol", "Countdown started.");
|
Log::info("SynchronizationProtocol", "Countdown started with value %f", m_countdown);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user