public void Subscribe(string strategyName, StrategyNotification <T> strategyNotification) { if (cancellationTokenSource.IsCancellationRequested) { return; } if (strategyNotification == null) { throw new ArgumentNullException(nameof(strategyNotification)); } var hasSubscribers = subscribers.Any(); if (!subscribers.TryAdd(strategyName, strategyNotification)) { strategyNotification.Exception(new Exception($"Failed to subscribe {strategyName} : {typeof(T).Name}")); return; } if (!hasSubscribers) { ExchangeSubscribe(Update, Exception, cancellationTokenSource.Token); } }
public void Subscribe(string strategyName, StrategySubscription strategySubscription, ITradeStrategy tradeStrategy) { if (strategySubscription == null) { throw new ArgumentNullException(nameof(strategySubscription)); } if (tradeStrategy == null) { throw new ArgumentNullException(nameof(tradeStrategy)); } if (strategySubscription.Subscribes.HasFlag(Subscribes.AccountInfo)) { var accountInfo = new StrategyNotification <AccountInfoEventArgs> { Update = tradeStrategy.SubscribeAccountInfo, Exception = tradeStrategy.SubscribeAccountInfoException }; subscribeAccountInfo.User.ApiKey = strategySubscription.ApiKey; subscribeAccountInfo.User.ApiSecret = strategySubscription.ApiKey; subscribeAccountInfo.Subscribe(strategyName, accountInfo); } }