private Subscription FindSubscription(CurrencyPair currencyPair, IExchangeMonitorSubscriber subscriber) { lock (_subscriptions) { return(_subscriptions.FirstOrDefault(s => s.CurrencyPair.Equals(currencyPair) && s.Subscriber == subscriber)); } }
/// <inheritdoc /> public void Subscribe(CurrencyPair currencyPair, IExchangeMonitorSubscriber subscriber) { Preconditions.CheckNotNull(currencyPair); Preconditions.CheckNotNull(subscriber); // Subscribe subscriber lock (_subscriptions) { if (ReferenceEquals(FindSubscription(currencyPair, subscriber), null)) { _subscriptions.Add(new Subscription(currencyPair, subscriber)); CheckChannelSubscriptions(); } } }
/// <inheritdoc /> public void Unsubscribe(CurrencyPair currencyPair, IExchangeMonitorSubscriber subscriber) { Preconditions.CheckNotNull(currencyPair); Preconditions.CheckNotNull(subscriber); // Unsubscribe subscriber lock (_subscriptions) { var subscription = FindSubscription(currencyPair, subscriber); if (!ReferenceEquals(subscription, null)) { _subscriptions.Remove(subscription); CheckChannelSubscriptions(); } } }
/// <summary> /// Constructor /// </summary> public Subscription(CurrencyPair currencyPair, IExchangeMonitorSubscriber subscriber) { CurrencyPair = Preconditions.CheckNotNull(currencyPair); Subscriber = Preconditions.CheckNotNull(subscriber); }