public void AddTracker(IEnumerable <Uri> trackerURIs) { lock (_trackers) { foreach (Uri trackerURI in trackerURIs) { bool trackerExists = false; foreach (TrackerClient tracker in _trackers) { if (tracker.TrackerUri.Equals(trackerURI)) { trackerExists = true; break; } } if (!trackerExists) { TrackerClient tracker = TrackerClient.Create(trackerURI, _networkID.Number, TrackerClientID.CreateDefaultID(), _customUpdateInterval); tracker.Proxy = _proxy; _trackers.Add(tracker); } } } }
protected override void ReadPlainTextFrom(BinaryReader bR) { if (Encoding.ASCII.GetString(bR.ReadBytes(2)) != "BP") { throw new BitChatException("Invalid BitChatProfile data format."); } byte version = bR.ReadByte(); switch (version) { case 1: #region version 1 //tracker client id TrackerClientID localClientID = new TrackerClientID(bR); //local cert store if (bR.ReadByte() == 1) { _localCertStore = new CertificateStore(bR); } //bitchat local service end point _localEP = new IPEndPoint(new IPAddress(bR.ReadBytes(bR.ReadByte())), bR.ReadInt32()); //default tracker urls _trackerURIs = DefaultTrackerURIs; break; #endregion case 2: case 3: #region version 2 & 3 //local cert store if (bR.ReadByte() == 1) { _localCertStore = new CertificateStore(bR); } //bitchat local service end point _localEP = new IPEndPoint(new IPAddress(bR.ReadBytes(bR.ReadByte())), bR.ReadInt32()); //download folder _downloadFolder = Encoding.UTF8.GetString(bR.ReadBytes(bR.ReadUInt16())); if (_downloadFolder == null) { _downloadFolder = @"C:\"; } //load tracker urls _trackerURIs = new Uri[bR.ReadByte()]; for (int i = 0; i < _trackerURIs.Length; i++) { _trackerURIs[i] = new Uri(Encoding.UTF8.GetString(bR.ReadBytes(bR.ReadByte()))); } //load bitchat info _bitChatInfoList = new BitChatInfo[bR.ReadByte()]; for (int i = 0; i < _bitChatInfoList.Length; i++) { _bitChatInfoList[i] = new BitChatInfo(bR); } if (version > 2) { //check CertificateRevocationList _checkCertificateRevocationList = bR.ReadBoolean(); } else { _checkCertificateRevocationList = true; } //generic client data int dataCount = bR.ReadInt32(); if (dataCount > 0) { _clientData = bR.ReadBytes(dataCount); } break; #endregion default: throw new BitChatException("BitChatProfile data version not supported."); } }
public TrackerClient AddTracker(Uri trackerURI) { lock (_trackers) { foreach (TrackerClient tracker in _trackers) { if (tracker.TrackerUri.Equals(trackerURI)) { return(null); } } { TrackerClient tracker = TrackerClient.Create(trackerURI, _networkID.Number, TrackerClientID.CreateDefaultID(), _customUpdateInterval); tracker.Proxy = _proxy; _trackers.Add(tracker); return(tracker); } } }
public void StartTracking(IEnumerable <Uri> trackerURIs = null) { lock (_trackers) { if (trackerURIs != null) { _trackers.Clear(); foreach (Uri trackerURI in trackerURIs) { TrackerClient tracker = TrackerClient.Create(trackerURI, _networkID.Number, TrackerClientID.CreateDefaultID(), _customUpdateInterval); tracker.Proxy = _proxy; _trackers.Add(tracker); } } if (_trackerUpdateTimer == null) { if ((_trackers.Count > 0) || (_ipv4DhtNode != null) || (_ipv6DhtNode != null)) { _trackerUpdateTimer = new Timer(TrackerUpdateTimerCallBack, TrackerClientEvent.Started, 1000, Timeout.Infinite); } } } }
private void StartTracking(Uri[] trackerURIs = null) { if (trackerURIs != null) { lock (_trackers) { _trackers.Clear(); foreach (Uri trackerURI in trackerURIs) { _trackers.Add(TrackerClient.Create(trackerURI, _network.NetworkID.ID, TrackerClientID.CreateDefaultID())); } } } if (_trackerUpdateTimer == null) { _trackerUpdateTimer = new Timer(UpdateTracker, TrackerClientEvent.Started, 1000, Timeout.Infinite); } }
public TrackerClient AddTracker(Uri trackerURI) { lock (_trackers) { foreach (TrackerClient tracker in _trackers) { if (tracker.TrackerUri.Equals(trackerURI)) { return(null); } } TrackerClient newTracker = TrackerClient.Create(trackerURI, _network.NetworkID.ID, TrackerClientID.CreateDefaultID()); _trackers.Add(newTracker); return(newTracker); } }
protected override void ReadPlainTextFrom(BinaryReader bR) { if (Encoding.ASCII.GetString(bR.ReadBytes(2)) != "BP") throw new BitChatException("Invalid BitChatProfile data format."); byte version = bR.ReadByte(); switch (version) { case 1: #region version 1 //tracker client id TrackerClientID localClientID = new TrackerClientID(bR); //local cert store if (bR.ReadByte() == 1) _localCertStore = new CertificateStore(bR); //bitchat local service end point _localEP = new IPEndPoint(new IPAddress(bR.ReadBytes(bR.ReadByte())), bR.ReadInt32()); //default tracker urls _trackerURIs = DefaultTrackerURIs; break; #endregion case 2: case 3: #region version 2 & 3 //local cert store if (bR.ReadByte() == 1) _localCertStore = new CertificateStore(bR); //bitchat local service end point _localEP = new IPEndPoint(new IPAddress(bR.ReadBytes(bR.ReadByte())), bR.ReadInt32()); //download folder _downloadFolder = Encoding.UTF8.GetString(bR.ReadBytes(bR.ReadUInt16())); if (_downloadFolder == null) _downloadFolder = @"C:\"; //load tracker urls _trackerURIs = new Uri[bR.ReadByte()]; for (int i = 0; i < _trackerURIs.Length; i++) _trackerURIs[i] = new Uri(Encoding.UTF8.GetString(bR.ReadBytes(bR.ReadByte()))); //load bitchat info _bitChatInfoList = new BitChatInfo[bR.ReadByte()]; for (int i = 0; i < _bitChatInfoList.Length; i++) _bitChatInfoList[i] = new BitChatInfo(bR); if (version > 2) { //check CertificateRevocationList _checkCertificateRevocationList = bR.ReadBoolean(); } else { _checkCertificateRevocationList = true; } //generic client data int dataCount = bR.ReadInt32(); if (dataCount > 0) _clientData = bR.ReadBytes(dataCount); break; #endregion default: throw new BitChatException("BitChatProfile data version not supported."); } }