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();
                }
            }
        }
Esempio n. 4
0
 /// <summary>
 /// Constructor
 /// </summary>
 public Subscription(CurrencyPair currencyPair, IExchangeMonitorSubscriber subscriber)
 {
     CurrencyPair = Preconditions.CheckNotNull(currencyPair);
     Subscriber   = Preconditions.CheckNotNull(subscriber);
 }