private void ConnectAndAuthenticateAndResubscribe() { try { //Connect and auth ConnectAndAuthenticate(); //Resub markets MarketSubscriptionMessage marketSubscription = _processor.MarketResubscribeMessage; if (marketSubscription != null) { Trace.TraceInformation("Resubscribe to market subscription."); MarketSubscription(marketSubscription); } //Resub orders OrderSubscriptionMessage orderSubscription = _processor.OrderResubscribeMessage; if (orderSubscription != null) { Trace.TraceInformation("Resubscribe to order subscription."); OrderSubscription(orderSubscription); } //Reset counter ReconnectCounter = 0; } catch (Exception e) { Trace.TraceError("Reconnect failed", e); ReconnectCounter++; } }
public IObservable <MarketSnap> SubscribeMarket(string marketId, MarketSubscriptionMessage message) { networkClient.Start(); if (marketsObservables.TryGetValue(marketId, out IObservable <MarketSnap> market)) { networkClient.MarketSubscription(message); return(market); } var observable = Observable.Create <MarketSnap>( (IObserver <MarketSnap> observer) => { marketObservers.AddOrUpdate(marketId, observer, (key, existingVal) => existingVal); return(Disposable.Create(() => { marketsObservables.TryRemove(marketId, out IObservable <MarketSnap> o); marketObservers.TryRemove(marketId, out IObserver <MarketSnap> ob); })); }) .Publish() .RefCount(); marketsObservables.AddOrUpdate(marketId, observable, (key, existingVal) => existingVal); // TODO:// race? networkClient.MarketSubscription(message); return(observable); }
/// <summary> /// Subscribe the the specified orders (syncronously) with the configured /// HeartbeatMS, ConflationMS and MarketDataFilter. /// </summary> /// <param name="message"></param> public void MarketSubscription(MarketSubscriptionMessage message) { message.ConflateMs = ConflateMs; message.HeartbeatMs = HeartbeatMs; if (MarketDataFilter != null) { message.MarketDataFilter = MarketDataFilter; } WaitFor(_processor.MarketSubscription(message)); }
public Task <StatusMessage> MarketSubscription(MarketSubscriptionMessage message) { int id = NextId(); message.Id = id; message.Op = REQUEST_MARKET_SUBSCRIPTION; var newSub = new SubscriptionHandler <MarketSubscriptionMessage, ChangeMessage <MarketChange>, MarketChange>(id, message, false); return(SendMessage(new RequestResponse(id, message, success => MarketSubscriptionHandler = newSub))); }
public IObservable <MarketSnap> SubscribeMarket(string marketId) { MarketFilter filter = new MarketFilter { MarketIds = new List <string>() { marketId } }; MarketSubscriptionMessage message = new MarketSubscriptionMessage() { MarketFilter = filter }; return(SubscribeMarket(marketId, message)); }
/// <summary> /// Subscribe the the specified orders (syncronously) with the configured /// HeartbeatMS, ConflationMS and MarketDataFilter. /// </summary> /// <param name="message"></param> public void MarketSubscription(MarketSubscriptionMessage message) { foreach (var market in message.MarketFilter.MarketIds) { Log.Info($"MarketSubscription for {market}"); } message.ConflateMs = ConflateMs; message.HeartbeatMs = HeartbeatMs; if (MarketDataFilter != null) { message.MarketDataFilter = MarketDataFilter; } WaitFor(_processor.MarketSubscription(message)); }
/// <summary> /// Explicit order subscripion. (starting the client if needed). /// </summary> /// <param name="subscription"></param> public void SubscribeMarkets(MarketSubscriptionMessage subscription) { _client.Start(); _client.MarketSubscription(subscription); }
public IObservable<MarketSnap> SubscribeMarket(string marketId, MarketSubscriptionMessage message) { networkClient.Start(); IObservable<MarketSnap> market; if (marketsObservables.TryGetValue(marketId, out market)) { networkClient.MarketSubscription(message); return market; } var observable = Observable.Create<MarketSnap>( (IObserver<MarketSnap> observer) => { marketObservers.AddOrUpdate(marketId, observer, (key, existingVal) => existingVal); return Disposable.Create(() => { IObserver<MarketSnap> ob; IObservable<MarketSnap> o; marketsObservables.TryRemove(marketId, out o); marketObservers.TryRemove(marketId, out ob); }); }) .Publish() .RefCount(); marketsObservables.AddOrUpdate(marketId, observable, (key, existingVal) => existingVal); // TODO:// race? networkClient.MarketSubscription(message); return observable; }
public IObservable<MarketSnap> SubscribeMarket(string marketId) { MarketFilter filter = new MarketFilter { MarketIds = new List<string>() { marketId } }; MarketSubscriptionMessage message = new MarketSubscriptionMessage() { MarketFilter = filter }; return SubscribeMarket(marketId, message); }