private void RaiseNewTrade(Trade trade) { NewTrade?.Invoke(trade); NewTrades?.Invoke(new[] { trade }); }
private void OnProcess(dynamic obj) { var channel = (string)obj.channel; var evt = (string)obj.@event; var data = obj.data; //if (data != null && evt != "bts:error") // data = ((string)data).DeserializeObject<object>(); switch (evt) { //case "pusher:connection_established": // _activityTimeout = (int)data.activity_timeout; // _nextPing = DateTime.UtcNow.AddSeconds(_activityTimeout); // Connected?.Invoke(); // break; case "bts:error": Error?.Invoke(new InvalidOperationException((string)data.message)); break; case "ping": SendPingPong("pong"); break; case "pong": break; case "bts:subscription_succeeded": { if (channel.StartsWith(ChannelNames.OrderBook)) { OrderBookSubscribed?.Invoke(GetPair(channel, ChannelNames.OrderBook)); } else if (channel.StartsWith(ChannelNames.Trades)) { TradesSubscribed?.Invoke(GetPair(channel, ChannelNames.Trades)); } else if (channel.StartsWith(ChannelNames.OrderLog)) { OrderLogSubscribed?.Invoke(GetPair(channel, ChannelNames.OrderLog)); } else { this.AddErrorLog(LocalizedStrings.Str3311Params, channel); } break; } case "bts:unsubscription_succeeded": { if (channel.StartsWith(ChannelNames.OrderBook)) { OrderBookUnSubscribed?.Invoke(GetPair(channel, ChannelNames.OrderBook)); } else if (channel.StartsWith(ChannelNames.Trades)) { TradesUnSubscribed?.Invoke(GetPair(channel, ChannelNames.Trades)); } else if (channel.StartsWith(ChannelNames.OrderLog)) { OrderLogUnSubscribed?.Invoke(GetPair(channel, ChannelNames.OrderLog)); } else { this.AddErrorLog(LocalizedStrings.Str3311Params, channel); } break; } case "trade": NewTrade?.Invoke(GetPair(channel, ChannelNames.Trades), ((JToken)data).DeserializeObject <Trade>()); break; case "data": NewOrderBook?.Invoke(GetPair(channel, ChannelNames.OrderBook), ((JToken)data).DeserializeObject <OrderBook>()); break; case "order_created": case "order_changed": case "order_deleted": NewOrderLog?.Invoke(GetPair(channel, ChannelNames.OrderLog), evt == "order_deleted" ? OrderStates.Done : OrderStates.Active, ((JToken)data).DeserializeObject <Order>()); break; default: this.AddErrorLog(LocalizedStrings.Str3312Params, evt); break; } }