Removing ITimeoutHandler to simplify timeout queue interface, removes some unneeded code
Signed-off-by: kberg-amzn <karlberg@amazon.com>
This commit is contained in:
@@ -122,10 +122,4 @@ namespace AzNetworking
|
||||
m_timeoutItemMap.erase(itemTimeoutId);
|
||||
}
|
||||
}
|
||||
|
||||
void TimeoutQueue::UpdateTimeouts(ITimeoutHandler& timeoutHandler, int32_t maxTimeouts)
|
||||
{
|
||||
TimeoutHandler handler([&timeoutHandler](TimeoutQueue::TimeoutItem& item) { return timeoutHandler.HandleTimeout(item); });
|
||||
UpdateTimeouts(handler, maxTimeouts);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,8 +23,6 @@ namespace AzNetworking
|
||||
Delete
|
||||
};
|
||||
|
||||
class ITimeoutHandler;
|
||||
|
||||
//! @class TimeoutQueue
|
||||
//! @brief class for managing timeout items.
|
||||
class TimeoutQueue
|
||||
@@ -70,11 +68,6 @@ namespace AzNetworking
|
||||
using TimeoutHandler = AZStd::function<TimeoutResult(TimeoutQueue::TimeoutItem&)>;
|
||||
void UpdateTimeouts(const TimeoutHandler& timeoutHandler, int32_t maxTimeouts = -1);
|
||||
|
||||
//! Updates timeouts for all items, invokes timeout handlers if required.
|
||||
//! @param timeoutHandler listener instance to call back on for timeouts
|
||||
//! @param maxTimeouts the maximum number of timeouts to process before breaking iteration
|
||||
void UpdateTimeouts(ITimeoutHandler& timeoutHandler, int32_t maxTimeouts = -1);
|
||||
|
||||
private:
|
||||
|
||||
struct TimeoutQueueItem
|
||||
@@ -94,19 +87,6 @@ namespace AzNetworking
|
||||
TimeoutItemMap m_timeoutItemMap;
|
||||
TimeoutItemQueue m_timeoutItemQueue;
|
||||
};
|
||||
|
||||
//! @class ITimeoutHandler
|
||||
//! @brief interface class for managing timeout items.
|
||||
class ITimeoutHandler
|
||||
{
|
||||
public:
|
||||
virtual ~ITimeoutHandler() = default;
|
||||
|
||||
//! Handler callback for timed out items.
|
||||
//! @param item containing registered timeout details
|
||||
//! @return ETimeoutResult for whether to re-register or discard the timeout params
|
||||
virtual TimeoutResult HandleTimeout(TimeoutQueue::TimeoutItem& item) = 0;
|
||||
};
|
||||
}
|
||||
|
||||
#include <AzNetworking/DataStructures/TimeoutQueue.inl>
|
||||
|
||||
@@ -20,7 +20,13 @@ namespace AzNetworking
|
||||
|
||||
void UdpFragmentQueue::Update()
|
||||
{
|
||||
m_timeoutQueue.UpdateTimeouts(*this);
|
||||
m_timeoutQueue.UpdateTimeouts([this](TimeoutQueue::TimeoutItem& item)
|
||||
{
|
||||
const SequenceId fragmentSequence = static_cast<SequenceId>(item.m_userData & 0xFF);
|
||||
AZLOG(NET_FragmentQueue, "Timing out unreliable fragmented packet %u", static_cast<uint32_t>(fragmentSequence));
|
||||
m_packetFragments.erase(fragmentSequence);
|
||||
return TimeoutResult::Delete;
|
||||
});
|
||||
}
|
||||
|
||||
void UdpFragmentQueue::Reset()
|
||||
@@ -163,12 +169,4 @@ namespace AzNetworking
|
||||
|
||||
return handledPacket;
|
||||
}
|
||||
|
||||
TimeoutResult UdpFragmentQueue::HandleTimeout(TimeoutQueue::TimeoutItem& item)
|
||||
{
|
||||
const SequenceId fragmentSequence = static_cast<SequenceId>(item.m_userData & 0xFF);
|
||||
AZLOG(NET_FragmentQueue, "Timing out unreliable fragmented packet %u", static_cast<uint32_t>(fragmentSequence));
|
||||
m_packetFragments.erase(fragmentSequence);
|
||||
return TimeoutResult::Delete;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ namespace AzNetworking
|
||||
//! @class UdpFragmentQueue
|
||||
//! @brief Class for reconstructing packet chunks into the original unsegmented packet.
|
||||
class UdpFragmentQueue
|
||||
: public ITimeoutHandler
|
||||
{
|
||||
|
||||
public:
|
||||
@@ -51,11 +50,6 @@ namespace AzNetworking
|
||||
|
||||
private:
|
||||
|
||||
//! Handler callback for timed out items.
|
||||
//! @param item containing registered timeout details
|
||||
//! @return ETimeoutResult for whether to re-register or discard the timeout params
|
||||
TimeoutResult HandleTimeout(TimeoutQueue::TimeoutItem& item) override;
|
||||
|
||||
TimeoutQueue m_timeoutQueue;
|
||||
SequenceGenerator m_sequenceGenerator;
|
||||
|
||||
|
||||
-2
@@ -150,7 +150,6 @@ namespace Multiplayer
|
||||
void ClearRemovedReplicators();
|
||||
|
||||
class OrphanedEntityRpcs
|
||||
: public AzNetworking::ITimeoutHandler
|
||||
{
|
||||
public:
|
||||
OrphanedEntityRpcs(EntityReplicationManager& replicationManager);
|
||||
@@ -159,7 +158,6 @@ namespace Multiplayer
|
||||
void AddOrphanedRpc(NetEntityId entityId, NetworkEntityRpcMessage& entityRpcMessage);
|
||||
AZStd::size_t Size() const { return m_entityRpcMap.size(); }
|
||||
private:
|
||||
AzNetworking::TimeoutResult HandleTimeout(AzNetworking::TimeoutQueue::TimeoutItem& item) override;
|
||||
struct OrphanedRpcs
|
||||
{
|
||||
OrphanedRpcs() = default;
|
||||
|
||||
+14
-16
@@ -912,24 +912,22 @@ namespace Multiplayer
|
||||
;
|
||||
}
|
||||
|
||||
AzNetworking::TimeoutResult EntityReplicationManager::OrphanedEntityRpcs::HandleTimeout(AzNetworking::TimeoutQueue::TimeoutItem& item)
|
||||
{
|
||||
NetEntityId timedOutEntityId = aznumeric_cast<NetEntityId>(item.m_userData);
|
||||
auto entityRpcsIter = m_entityRpcMap.find(timedOutEntityId);
|
||||
if (entityRpcsIter != m_entityRpcMap.end())
|
||||
{
|
||||
for (NetworkEntityRpcMessage& rpcMessage : entityRpcsIter->second.m_rpcMessages)
|
||||
{
|
||||
m_replicationManager.DispatchOrphanedRpc(rpcMessage, nullptr);
|
||||
}
|
||||
m_entityRpcMap.erase(entityRpcsIter);
|
||||
}
|
||||
return AzNetworking::TimeoutResult::Delete;
|
||||
}
|
||||
|
||||
void EntityReplicationManager::OrphanedEntityRpcs::Update()
|
||||
{
|
||||
m_timeoutQueue.UpdateTimeouts(*this);
|
||||
m_timeoutQueue.UpdateTimeouts([this](AzNetworking::TimeoutQueue::TimeoutItem& item)
|
||||
{
|
||||
NetEntityId timedOutEntityId = aznumeric_cast<NetEntityId>(item.m_userData);
|
||||
auto entityRpcsIter = m_entityRpcMap.find(timedOutEntityId);
|
||||
if (entityRpcsIter != m_entityRpcMap.end())
|
||||
{
|
||||
for (NetworkEntityRpcMessage& rpcMessage : entityRpcsIter->second.m_rpcMessages)
|
||||
{
|
||||
m_replicationManager.DispatchOrphanedRpc(rpcMessage, nullptr);
|
||||
}
|
||||
m_entityRpcMap.erase(entityRpcsIter);
|
||||
}
|
||||
return AzNetworking::TimeoutResult::Delete;
|
||||
});
|
||||
}
|
||||
|
||||
bool EntityReplicationManager::OrphanedEntityRpcs::DispatchOrphanedRpcs(EntityReplicator& entityReplicator)
|
||||
|
||||
Reference in New Issue
Block a user