peer.cs
来自「破解的飞信源代码」· CS 代码 · 共 109 行
CS
109 行
namespace Imps.Client.Core.P2P.ICE
{
using Imps.Client.Core;
using NCindy.Util;
using System;
using System.Collections.Generic;
using System.Net;
public class Peer
{
private readonly List<IPEndPoint> candidateTcpEndPoints = new List<IPEndPoint>();
private TransportMode mode = TransportMode.P2PV2;
private readonly long sid;
private readonly List<IPEndPoint> usableEndPoints = new List<IPEndPoint>();
public Peer(long sid)
{
this.sid = sid;
}
public void AddUsableEndPoint(IPEndPoint iep)
{
lock (this.usableEndPoints)
{
if (!this.usableEndPoints.Contains(iep))
{
this.usableEndPoints.Add(iep);
}
}
}
public override bool Equals(object obj)
{
if (object.ReferenceEquals(this, obj))
{
return true;
}
if (!(obj is Peer))
{
return false;
}
Peer peer = (Peer) obj;
return (((this.sid == peer.sid) && (this.mode == peer.mode)) && object.Equals(this.FirstEndPoint, peer.FirstEndPoint));
}
public override int GetHashCode()
{
return ((this.sid.GetHashCode() ^ this.FirstEndPoint.GetHashCode()) ^ this.mode.GetHashCode());
}
public override string ToString()
{
return string.Format("Sid:{0}, Mode:{1}, First endpoint:{2}", this.sid, this.mode, (this.FirstEndPoint == null) ? "Null" : this.FirstEndPoint.ToString());
}
public List<IPEndPoint> CandidateTcpEndPoints
{
get
{
return this.candidateTcpEndPoints;
}
}
public IPEndPoint FirstEndPoint
{
get
{
if (this.usableEndPoints.get_Count() == 0)
{
return null;
}
lock (this.usableEndPoints)
{
return this.usableEndPoints.get_Item(0);
}
}
}
public TransportMode Mode
{
get
{
return this.mode;
}
set
{
this.mode = value;
}
}
public string PeerToken
{
get
{
return CryptoHelper.GetMD5(BitConverter.GetBytes(this.sid));
}
}
public long Sid
{
get
{
return this.sid;
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?