Exemplo n.º 1
0
        internal void AddAuthentifiedPeer(IPeer peer)
        {
            if (peer == null)
            {
                _logger?.Warn("Peer is null, cannot add.");
                return;
            }

            if (!peer.IsAuthentified)
            {
                _logger?.Warn($"Peer not authentified, cannot add {peer}");
                return;
            }

            lock (_peerListLock)
            {
                _authentifyingPeer.Remove(peer);

                if (GetPeer(peer) != null)
                {
                    peer.Dispose(); // todo
                    return;
                }

                _peers.Add(peer);
            }

            _logger?.Info($"Peer authentified and added : {{ addr: {peer}, key: {peer.DistantNodeAddress.ToHex()}, bp: {peer.IsBp} }}");

            peer.MessageReceived += OnPeerMessageReceived;

            PeerEvent?.Invoke(this, new PeerEventArgs(peer, PeerEventType.Added));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Disposes the <see cref="Broker" /> and releases all resources held by this instance.
        /// </summary>
        public void Dispose()
        {
            if (_disposed)
            {
                return;
            }

            try
            {
                InitializeDisposeLock.EnterWriteLock();

                if (_disposed)
                {
                    return;
                }

                if (_sharedPeer != null)
                {
                    _sharedPeer.Dispose();
                }

                if (_peer != null)
                {
                    _peer.Dispose();
                }

                _disposed = true;
            }
            finally
            {
                InitializeDisposeLock.ExitWriteLock();
            }
        }
Exemplo n.º 3
0
 public void Dispose()
 {
     db.Dispose();
     peer.Dispose();
 }
Exemplo n.º 4
0
 public void Dispose()
 {
     peer.Dispose();
 }