/// <summary> /// Removes the subscription from the data feed, if it exists /// </summary> /// <param name="configuration">The configuration of the subscription to remove</param> /// <returns>True if the subscription was successfully removed, false otherwise</returns> public bool RemoveSubscription(SubscriptionDataConfig configuration) { Subscription subscription; if (!_subscriptions.TryRemove(configuration, out subscription)) { Log.Error("FileSystemDataFeed.RemoveSubscription(): Unable to remove: " + configuration.ToString()); return(false); } subscription.Dispose(); Log.Debug("FileSystemDataFeed.RemoveSubscription(): Removed " + configuration.ToString()); UpdateFillForwardResolution(); return(true); }
/// <summary> /// Removes the subscription from the data feed, if it exists /// </summary> /// <param name="configuration">The configuration of the subscription to remove</param> /// <returns>True if the subscription was successfully removed, false otherwise</returns> public bool RemoveSubscription(SubscriptionDataConfig configuration) { // remove the subscription from our collection Subscription subscription; if (!_subscriptions.TryGetValue(configuration, out subscription)) { return(false); } var security = subscription.Security; // remove the subscriptions if (subscription.Configuration.IsCustomData) { _customExchange.RemoveEnumerator(security.Symbol); _customExchange.RemoveDataHandler(security.Symbol); } else { _dataQueueHandler.Unsubscribe(_job, new[] { security.Symbol }); _exchange.RemoveDataHandler(security.Symbol); } subscription.Dispose(); // keep track of security changes, we emit these to the algorithm // as notications, used in universe selection _changes += SecurityChanges.Removed(security); Log.Trace("LiveTradingDataFeed.RemoveSubscription(): Removed " + configuration.ToString()); UpdateFillForwardResolution(); return(true); }
/// <summary> /// Removes the subscription from the data feed, if it exists /// </summary> /// <param name="configuration">The configuration of the subscription to remove</param> /// <returns>True if the subscription was successfully removed, false otherwise</returns> public bool RemoveSubscription(SubscriptionDataConfig configuration) { // remove the subscription from our collection Subscription subscription; if (!_subscriptions.TryRemove(configuration, out subscription)) { Log.Error("LiveTradingDataFeed.RemoveSubscription(): Unable to remove: " + configuration.ToString()); return(false); } var security = subscription.Security; // remove the subscriptions if (subscription.Configuration.IsCustomData) { _customExchange.RemoveEnumerator(security.Symbol); _customExchange.RemoveDataHandler(security.Symbol); } else { _dataQueueHandler.Unsubscribe(_job, new[] { security.Symbol }); _exchange.RemoveDataHandler(security.Symbol); } // if the security is no longer a member of the universe, then mark the subscription properly if (subscription.Universe != null && !subscription.Universe.Members.ContainsKey(configuration.Symbol)) { subscription.MarkAsRemovedFromUniverse(); } subscription.Dispose(); // keep track of security changes, we emit these to the algorithm // as notications, used in universe selection if (!subscription.IsUniverseSelectionSubscription) { _changes += SecurityChanges.Removed(security); } Log.Trace("LiveTradingDataFeed.RemoveSubscription(): Removed " + configuration); UpdateFillForwardResolution(); return(true); }
/// <summary>Returns a string that represents the current object.</summary> /// <returns>A string that represents the current object.</returns> /// <filterpriority>2</filterpriority> public override string ToString() { return(Configuration.ToString()); }