Improve client-side packet receiving
parent
154080c883
commit
0b2f0914cc
|
@ -311,6 +311,7 @@ void Client::connect(Address address, bool is_local_server)
|
||||||
{
|
{
|
||||||
initLocalMapSaving(address, m_address_name, is_local_server);
|
initLocalMapSaving(address, m_address_name, is_local_server);
|
||||||
|
|
||||||
|
// Since we use TryReceive() a timeout here would be ineffective anyway
|
||||||
m_con->SetTimeoutMs(0);
|
m_con->SetTimeoutMs(0);
|
||||||
m_con->Connect(address);
|
m_con->Connect(address);
|
||||||
}
|
}
|
||||||
|
@ -795,22 +796,24 @@ void Client::initLocalMapSaving(const Address &address,
|
||||||
|
|
||||||
void Client::ReceiveAll()
|
void Client::ReceiveAll()
|
||||||
{
|
{
|
||||||
|
NetworkPacket pkt;
|
||||||
u64 start_ms = porting::getTimeMs();
|
u64 start_ms = porting::getTimeMs();
|
||||||
for(;;)
|
const u64 budget = 100;
|
||||||
{
|
for(;;) {
|
||||||
// Limit time even if there would be huge amounts of data to
|
// Limit time even if there would be huge amounts of data to
|
||||||
// process
|
// process
|
||||||
if(porting::getTimeMs() > start_ms + 100)
|
if (porting::getTimeMs() > start_ms + budget) {
|
||||||
|
infostream << "Client::ReceiveAll(): "
|
||||||
|
"Packet processing budget exceeded." << std::endl;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
pkt.clear();
|
||||||
try {
|
try {
|
||||||
Receive();
|
if (!m_con->TryReceive(&pkt))
|
||||||
g_profiler->graphAdd("client_received_packets", 1);
|
|
||||||
}
|
|
||||||
catch(con::NoIncomingDataException &e) {
|
|
||||||
break;
|
break;
|
||||||
}
|
ProcessData(&pkt);
|
||||||
catch(con::InvalidIncomingDataException &e) {
|
} catch (const con::InvalidIncomingDataException &e) {
|
||||||
infostream << "Client::ReceiveAll(): "
|
infostream << "Client::ReceiveAll(): "
|
||||||
"InvalidIncomingDataException: what()="
|
"InvalidIncomingDataException: what()="
|
||||||
<< e.what() << std::endl;
|
<< e.what() << std::endl;
|
||||||
|
@ -818,13 +821,6 @@ void Client::ReceiveAll()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::Receive()
|
|
||||||
{
|
|
||||||
NetworkPacket pkt;
|
|
||||||
m_con->Receive(&pkt);
|
|
||||||
ProcessData(&pkt);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void Client::handleCommand(NetworkPacket* pkt)
|
inline void Client::handleCommand(NetworkPacket* pkt)
|
||||||
{
|
{
|
||||||
const ToClientCommandHandler& opHandle = toClientCommandTable[pkt->getCommand()];
|
const ToClientCommandHandler& opHandle = toClientCommandTable[pkt->getCommand()];
|
||||||
|
@ -841,6 +837,7 @@ void Client::ProcessData(NetworkPacket *pkt)
|
||||||
|
|
||||||
//infostream<<"Client: received command="<<command<<std::endl;
|
//infostream<<"Client: received command="<<command<<std::endl;
|
||||||
m_packetcounter.add((u16)command);
|
m_packetcounter.add((u16)command);
|
||||||
|
g_profiler->graphAdd("client_received_packets", 1);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
If this check is removed, be sure to change the queue
|
If this check is removed, be sure to change the queue
|
||||||
|
|
|
@ -453,7 +453,6 @@ private:
|
||||||
bool is_local_server);
|
bool is_local_server);
|
||||||
|
|
||||||
void ReceiveAll();
|
void ReceiveAll();
|
||||||
void Receive();
|
|
||||||
|
|
||||||
void sendPlayerPos();
|
void sendPlayerPos();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue