using System.Collections.Generic;
using FishNet.Managing;
using FishNet.Managing.Statistic;
using FishNet.Transporting;
using GameKit.Dependencies.Utilities;
using UnityEngine;
namespace FishNet.Editing.NetworkProfiler
{
///
/// Used to store Inbound and Outbound traffic details.
///
public class BidirectionalNetworkTraffic : IResettable
{
///
/// Received traffic.
///
internal NetworkTraffic InboundTraffic;
///
/// Sent traffic.
///
internal NetworkTraffic OutboundTraffic;
///
/// Creates a clone of this class using cache.
///
///
public BidirectionalNetworkTraffic CloneUsingCache()
{
if (InboundTraffic == null)
{
NetworkManagerExtensions.LogError($"One or more NetworkTraffic values is null. {nameof(BidirectionalNetworkTraffic)} cannot be cloned.");
return null;
}
BidirectionalNetworkTraffic traffic = ResettableObjectCaches.Retrieve();
traffic.InboundTraffic = InboundTraffic;
traffic.OutboundTraffic = OutboundTraffic;
return traffic;
}
///
/// Re-initializes by calling ResetState, then InitializeState.
///
public void Reinitialize()
{
ResetState();
InitializeState();
}
public void ResetState()
{
ResettableObjectCaches.StoreAndDefault(ref InboundTraffic);
ResettableObjectCaches.StoreAndDefault(ref OutboundTraffic);
}
public void InitializeState()
{
InboundTraffic = ResettableObjectCaches.Retrieve();
OutboundTraffic = ResettableObjectCaches.Retrieve();
}
}
}