- Initial commit
This commit is contained in:
53
Runtime/Profiler/Network/NetworkStatsCollector.cs
Normal file
53
Runtime/Profiler/Network/NetworkStatsCollector.cs
Normal file
@ -0,0 +1,53 @@
|
||||
using System;
|
||||
using System.Threading;
|
||||
|
||||
namespace Best.HTTP.Profiler.Network
|
||||
{
|
||||
public static class NetworkStatsCollector
|
||||
{
|
||||
public static long TotalNetworkBytesReceived { get => _totalNetworkBytesReceived; }
|
||||
private static long _totalNetworkBytesReceived;
|
||||
|
||||
public static long TotalNetworkBytesSent { get => _totalNetworkBytesSent; }
|
||||
private static long _totalNetworkBytesSent;
|
||||
|
||||
public static int TotalConnections { get => _totalConnections; }
|
||||
private static int _totalConnections;
|
||||
|
||||
public static int OpenConnections { get => _openConnections; }
|
||||
private static int _openConnections;
|
||||
|
||||
public static int BufferedToSend { get => _bufferedToSend; }
|
||||
private static int _bufferedToSend;
|
||||
|
||||
public static int ReceivedAndUnprocessed { get => _receivedAndUnprocessed; }
|
||||
private static int _receivedAndUnprocessed;
|
||||
|
||||
internal static void IncrementCurrentConnections()
|
||||
{
|
||||
Interlocked.Increment(ref _totalConnections);
|
||||
Interlocked.Increment(ref _openConnections);
|
||||
}
|
||||
|
||||
internal static void DecrementCurrentConnections() => Interlocked.Decrement(ref _openConnections);
|
||||
|
||||
internal static void IncrementTotalNetworkBytesReceived(int amount) => Interlocked.Add(ref _totalNetworkBytesReceived, amount);
|
||||
|
||||
internal static void IncrementTotalNetworkBytesSent(int amount) => Interlocked.Add(ref _totalNetworkBytesSent, amount);
|
||||
|
||||
internal static void IncrementBufferedToSend(int amount) => Interlocked.Add(ref _bufferedToSend, amount);
|
||||
internal static void IncrementReceivedAndUnprocessed(int amount) => Interlocked.Add(ref _receivedAndUnprocessed, amount);
|
||||
|
||||
internal static void ResetNetworkStats()
|
||||
{
|
||||
Interlocked.Exchange(ref _totalNetworkBytesReceived, 0);
|
||||
Interlocked.Exchange(ref _totalNetworkBytesSent, 0);
|
||||
|
||||
Interlocked.Exchange(ref _totalConnections, 0);
|
||||
Interlocked.Exchange(ref _openConnections, 0);
|
||||
|
||||
Interlocked.Exchange(ref _bufferedToSend, 0);
|
||||
Interlocked.Exchange(ref _receivedAndUnprocessed, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user