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(); } } }