From e8fd5eb8eebbf12b0561d385ef8bc245d87e9ea6 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sat, 27 Nov 2010 18:10:11 +0200 Subject: block send priority queue --- src/server.h | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'src/server.h') diff --git a/src/server.h b/src/server.h index c178480d5..8e2e05626 100644 --- a/src/server.h +++ b/src/server.h @@ -208,11 +208,11 @@ u32 PIChecksum(core::list &l); */ struct PrioritySortedBlockTransfer { - PrioritySortedBlockTransfer(float a_priority, v3s16 a_pos, u16 a_dest_peer) + PrioritySortedBlockTransfer(float a_priority, v3s16 a_pos, u16 a_peer_id) { priority = a_priority; pos = a_pos; - dest_peer = a_dest_peer; + peer_id = a_peer_id; } bool operator < (PrioritySortedBlockTransfer &other) { @@ -220,7 +220,7 @@ struct PrioritySortedBlockTransfer } float priority; v3s16 pos; - u16 a_dest_peer; + u16 peer_id; }; class RemoteClient @@ -252,8 +252,13 @@ public: { } - // Connection and environment should be locked when this is called - void SendBlocks(Server *server, float dtime); + /* + Finds block that should be sent next to the client. + Environment should be locked when this is called. + dtime is used for resetting send radius at slow interval + */ + void GetNextBlocks(Server *server, float dtime, + core::array &dest); // Connection and environment should be locked when this is called // steps() objects of blocks not found in active_blocks, then @@ -272,6 +277,18 @@ public: void SetBlocksNotSent(core::map &blocks); void BlockEmerged(); + + /*bool IsSendingBlock(v3s16 p) + { + JMutexAutoLock lock(m_blocks_sending_mutex); + return (m_blocks_sending.find(p) != NULL); + }*/ + + s32 SendingCount() + { + JMutexAutoLock lock(m_blocks_sending_mutex); + return m_blocks_sending.size(); + } // Increments timeouts and removes timed-out blocks from list // NOTE: This doesn't fix the server-not-sending-block bug -- cgit v1.2.3