public void Insert(IKProtocolEndpoint <TNodeId> endpoint) { var b = false; using (sync.BeginWriteLock()) b = set.AddLast(endpoint); if (b) { OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, endpoint)); } }
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); }
/// <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()))); }
/// <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)); }
void ICollection <IKProtocolEndpoint <TNodeId> > .Add(IKProtocolEndpoint <TNodeId> item) { Insert(item); }