hawkeye camera support(not tested)
This commit is contained in:
111
framework/Inspectron.HawkEye/UDT/InfoBlock.cs
Normal file
111
framework/Inspectron.HawkEye/UDT/InfoBlock.cs
Normal file
@@ -0,0 +1,111 @@
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
|
||||
namespace UdtSharp
|
||||
{
|
||||
public class InfoBlock
|
||||
{
|
||||
uint[] m_piIP = new uint[4]; // IP address, machine read only, not human readable format
|
||||
AddressFamily m_iIPversion; // IP version
|
||||
public ulong m_ullTimeStamp; // last update time
|
||||
public int m_iRTT; // RTT
|
||||
public int m_iBandwidth; // estimated bandwidth
|
||||
public int m_iLossRate; // average loss rate
|
||||
public int m_iReorderDistance; // packet reordering distance
|
||||
public double m_dInterval; // inter-packet time, congestion control
|
||||
public double m_dCWnd; // congestion window size, congestion control
|
||||
|
||||
public InfoBlock(IPAddress address)
|
||||
{
|
||||
m_iIPversion = address.AddressFamily;
|
||||
ConvertIPAddress.ToUintArray(address, ref m_piIP);
|
||||
}
|
||||
|
||||
public override bool Equals(object value)
|
||||
{
|
||||
// Is null?
|
||||
if (Object.ReferenceEquals(null, value))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Is the same object?
|
||||
if (Object.ReferenceEquals(this, value))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Is the same type?
|
||||
if (value.GetType() != this.GetType())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return IsEqual((InfoBlock)value);
|
||||
}
|
||||
|
||||
public bool Equals(InfoBlock infoBlock)
|
||||
{
|
||||
if (Object.ReferenceEquals(null, infoBlock))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Is the same object?
|
||||
if (Object.ReferenceEquals(this, infoBlock))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return IsEqual(infoBlock);
|
||||
}
|
||||
|
||||
public static bool operator ==(InfoBlock infoBlockA, InfoBlock infoBlockB)
|
||||
{
|
||||
if (Object.ReferenceEquals(infoBlockA, infoBlockB))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Ensure that "numberA" isn't null
|
||||
if (Object.ReferenceEquals(null, infoBlockA))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return (infoBlockA.Equals(infoBlockB));
|
||||
}
|
||||
|
||||
public static bool operator !=(InfoBlock infoBlockA, InfoBlock infoBlockB)
|
||||
{
|
||||
return !(infoBlockA == infoBlockB);
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
if (m_iIPversion == AddressFamily.InterNetwork)
|
||||
return (int)m_piIP[0];
|
||||
|
||||
return (int)(m_piIP[0] + m_piIP[1] + m_piIP[2] + m_piIP[3]);
|
||||
}
|
||||
|
||||
bool IsEqual(InfoBlock infoBlock)
|
||||
{
|
||||
if (m_iIPversion != infoBlock.m_iIPversion)
|
||||
return false;
|
||||
|
||||
else if (m_iIPversion == AddressFamily.InterNetwork)
|
||||
return (m_piIP[0] == infoBlock.m_piIP[0]);
|
||||
|
||||
for (int i = 0; i < 4; ++i)
|
||||
{
|
||||
if (m_piIP[i] != infoBlock.m_piIP[i])
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user