aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLoïc Blot <nerzhul@users.noreply.github.com>2017-08-18 12:17:30 +0200
committerGitHub <noreply@github.com>2017-08-18 12:17:30 +0200
commitfb196be8cf8606cfab144e2fe62d9c9d1f50932f (patch)
tree25bdcb180dfec00f8b10f09a687147ce1944088c /src
parent1d055aad0ff140968b9617b4ebf7c748f8dc20a8 (diff)
downloadminetest-fb196be8cf8606cfab144e2fe62d9c9d1f50932f.tar.gz
minetest-fb196be8cf8606cfab144e2fe62d9c9d1f50932f.tar.bz2
minetest-fb196be8cf8606cfab144e2fe62d9c9d1f50932f.zip
server.cpp: unroll setting when sending mapblocks (#6265)
* server.cpp: unroll setting when sending mapblocks * Improve a little bit performance when sending mapblocks massively * Use a range based for * Code style fixes
Diffstat (limited to 'src')
-rw-r--r--src/server.cpp47
1 files changed, 20 insertions, 27 deletions
diff --git a/src/server.cpp b/src/server.cpp
index 41493a862..685f1f667 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -95,8 +95,6 @@ void *ServerThread::run()
while (!stopRequested()) {
try {
- //TimeTaker timer("AsyncRunStep() + Receive()");
-
m_server->AsyncRunStep();
m_server->Receive();
@@ -989,23 +987,17 @@ void Server::Receive()
m_con.Receive(&pkt);
peer_id = pkt.getPeerId();
ProcessData(&pkt);
- }
- catch(con::InvalidIncomingDataException &e) {
- infostream<<"Server::Receive(): "
- "InvalidIncomingDataException: what()="
- <<e.what()<<std::endl;
- }
- catch(SerializationError &e) {
- infostream<<"Server::Receive(): "
- "SerializationError: what()="
- <<e.what()<<std::endl;
- }
- catch(ClientStateError &e) {
+ } catch (const con::InvalidIncomingDataException &e) {
+ infostream << "Server::Receive(): InvalidIncomingDataException: what()="
+ << e.what() << std::endl;
+ } catch (const SerializationError &e) {
+ infostream << "Server::Receive(): SerializationError: what()="
+ << e.what() << std::endl;
+ } catch (const ClientStateError &e) {
errorstream << "ProcessData: peer=" << peer_id << e.what() << std::endl;
DenyAccess_Legacy(peer_id, L"Your client sent something server didn't expect."
L"Try reconnecting or updating your client");
- }
- catch(con::PeerNotFoundException &e) {
+ } catch (const con::PeerNotFoundException &e) {
// Do nothing
}
}
@@ -2259,29 +2251,30 @@ void Server::SendBlocks(float dtime)
std::sort(queue.begin(), queue.end());
m_clients.lock();
- for(u32 i=0; i<queue.size(); i++)
- {
+ s32 max_blocks_to_send =
+ g_settings->getS32("max_simultaneous_block_sends_server_total");
+
+ for (const PrioritySortedBlockTransfer &block_to_send : queue) {
//TODO: Calculate limit dynamically
- if(total_sending >= g_settings->getS32
- ("max_simultaneous_block_sends_server_total"))
+ if (total_sending >= max_blocks_to_send)
break;
- PrioritySortedBlockTransfer q = queue[i];
-
MapBlock *block = nullptr;
try {
- block = m_env->getMap().getBlockNoCreate(q.pos);
- } catch(const InvalidPositionException &e) {
+ block = m_env->getMap().getBlockNoCreate(block_to_send.pos);
+ } catch (const InvalidPositionException &e) {
continue;
}
- RemoteClient *client = m_clients.lockedGetClientNoEx(q.peer_id, CS_Active);
+ RemoteClient *client = m_clients.lockedGetClientNoEx(block_to_send.peer_id,
+ CS_Active);
if (!client)
continue;
- SendBlockNoLock(q.peer_id, block, client->serialization_version, client->net_proto_version);
+ SendBlockNoLock(block_to_send.peer_id, block, client->serialization_version,
+ client->net_proto_version);
- client->SentBlock(q.pos);
+ client->SentBlock(block_to_send.pos);
total_sending++;
}
m_clients.unlock();