aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/Network/Sony/SQRNetworkManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.Client/Common/Network/Sony/SQRNetworkManager.cpp')
-rw-r--r--Minecraft.Client/Common/Network/Sony/SQRNetworkManager.cpp73
1 files changed, 73 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/Network/Sony/SQRNetworkManager.cpp b/Minecraft.Client/Common/Network/Sony/SQRNetworkManager.cpp
index 20f2641c..f23a0a63 100644
--- a/Minecraft.Client/Common/Network/Sony/SQRNetworkManager.cpp
+++ b/Minecraft.Client/Common/Network/Sony/SQRNetworkManager.cpp
@@ -8,3 +8,76 @@ void SQRNetworkManager::SafeToRespondToGameBootInvite()
{
s_safeToRespondToGameBootInvite = true;
}
+
+int SQRNetworkManager::GetSendQueueSizeBytes()
+{
+ int queueSize = 0;
+ int playerCount = GetPlayerCount();
+ for(int i = 0; i < playerCount; ++i)
+ {
+ SQRNetworkPlayer *player = GetPlayerByIndex( i );
+ if( player != NULL )
+ {
+ queueSize += player->GetTotalSendQueueBytes();
+ }
+ }
+ return queueSize;
+}
+
+int SQRNetworkManager::GetSendQueueSizeMessages()
+{
+ int queueSize = 0;
+ int playerCount = GetPlayerCount();
+ for(int i = 0; i < playerCount; ++i)
+ {
+ SQRNetworkPlayer *player = GetPlayerByIndex( i );
+ if( player != NULL )
+ {
+ queueSize += player->GetTotalSendQueueMessages();
+ }
+ }
+ return queueSize;
+}
+
+int SQRNetworkManager::GetOutstandingAckCount(SQRNetworkPlayer *pSQRPlayer)
+{
+ int ackCount = 0;
+ int playerCount = GetPlayerCount();
+ for(int i = 0; i < playerCount; ++i)
+ {
+ SQRNetworkPlayer *pSQRPlayer2 = GetPlayerByIndex( i );
+ if( pSQRPlayer2 )
+ {
+ if( ( pSQRPlayer == pSQRPlayer2 ) || (pSQRPlayer->IsSameSystem(pSQRPlayer2) ) )
+ {
+ ackCount += pSQRPlayer2->m_acksOutstanding;
+ }
+ }
+ }
+ return ackCount;
+}
+
+void SQRNetworkManager::RequestWriteAck(int smallId)
+{
+ EnterCriticalSection(&m_csAckQueue);
+ m_queuedAckRequests.push(smallId);
+ LeaveCriticalSection(&m_csAckQueue);
+}
+
+void SQRNetworkManager::TickWriteAcks()
+{
+ EnterCriticalSection(&m_csAckQueue);
+ while(m_queuedAckRequests.size() > 0)
+ {
+ int smallId = m_queuedAckRequests.front();
+ m_queuedAckRequests.pop();
+ SQRNetworkPlayer *player = GetPlayerBySmallId(smallId);
+ if( player )
+ {
+ LeaveCriticalSection(&m_csAckQueue);
+ player->WriteAck();
+ EnterCriticalSection(&m_csAckQueue);
+ }
+ }
+ LeaveCriticalSection(&m_csAckQueue);
+} \ No newline at end of file