예제 #1
0
        public void Insert(IKProtocolEndpoint <TNodeId> endpoint)
        {
            var b = false;

            using (sync.BeginWriteLock())
                b = set.AddLast(endpoint);

            if (b)
            {
                OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, endpoint));
            }
        }
예제 #2
0
        public bool Remove(IKProtocolEndpoint <TNodeId> endpoint)
        {
            var b = false;

            using (sync.BeginUpgradableReadLock())
                if (set.Contains(endpoint))
                {
                    using (sync.BeginWriteLock())
                        b = set.Remove(endpoint);
                }

            if (b)
            {
                OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, endpoint));
            }

            return(b);
        }
예제 #3
0
 /// <summary>
 /// Initiates a bootstrap connection to the specified endpoint.
 /// </summary>
 /// <param name="endpoint"></param>
 /// <param name="cancellationToken"></param>
 /// <returns></returns>
 public ValueTask ConnectAsync(IKProtocolEndpoint <TNodeId> endpoint, CancellationToken cancellationToken = default)
 {
     return(ConnectAsync(new KProtocolEndpointSet <TNodeId>(endpoint.Yield())));
 }
예제 #4
0
 /// <summary>
 /// Returns <c>true</c> if the set contains this endpoint.
 /// </summary>
 /// <param name="item"></param>
 /// <returns></returns>
 public bool Contains(IKProtocolEndpoint <TNodeId> item)
 {
     using (sync.BeginReadLock())
         return(set.Contains(item));
 }
예제 #5
0
 void ICollection <IKProtocolEndpoint <TNodeId> > .Add(IKProtocolEndpoint <TNodeId> item)
 {
     Insert(item);
 }