// Use this for initialization void Start() { if (Pusher == null) { Pusher = this; } else { Destroy(this); } DontDestroyOnLoad(this); _class = new AndroidJavaClass("com.matbar.pusher.PusherManager"); javaStart(); }
/// <inheritdoc /> protected override bool OnSendInMessage(Message message) { switch (message.Type) { case MessageTypes.Reset: { _lastMyTradeId = 0; _lastTimeBalanceCheck = null; if (_httpClient != null) { try { _httpClient.Dispose(); } catch (Exception ex) { SendOutError(ex); } _httpClient = null; } if (_pusherClient != null) { try { UnsubscribePusherClient(); _pusherClient.Disconnect(); } catch (Exception ex) { SendOutError(ex); } _pusherClient = null; } SendOutMessage(new ResetMessage()); break; } case MessageTypes.Connect: { if (this.IsTransactional()) { if (!AuthV2 && ClientId.IsEmpty()) { throw new InvalidOperationException(LocalizedStrings.Str3835); } if (Key.IsEmpty()) { throw new InvalidOperationException(LocalizedStrings.Str3689); } if (Secret.IsEmpty()) { throw new InvalidOperationException(LocalizedStrings.Str3690); } } #if !IGNORE_LICENSE var msg = "Crypto".ValidateLicense(component: GetType()); if (!msg.IsEmpty()) { msg = nameof(BitStamp).ValidateLicense(component: GetType()); if (!msg.IsEmpty()) { throw new InvalidOperationException(msg); } } #endif if (_httpClient != null) { throw new InvalidOperationException(LocalizedStrings.Str1619); } if (_pusherClient != null) { throw new InvalidOperationException(LocalizedStrings.Str1619); } _httpClient = new HttpClient(ClientId, Key, Secret, AuthV2) { Parent = this }; _pusherClient = new PusherClient { Parent = this }; SubscribePusherClient(); _pusherClient.Connect(); break; } case MessageTypes.Disconnect: { if (_httpClient == null) { throw new InvalidOperationException(LocalizedStrings.Str1856); } if (_pusherClient == null) { throw new InvalidOperationException(LocalizedStrings.Str1856); } _httpClient.Dispose(); _httpClient = null; _pusherClient.Disconnect(); break; } case MessageTypes.PortfolioLookup: { ProcessPortfolioLookup((PortfolioLookupMessage)message); break; } case MessageTypes.OrderStatus: { ProcessOrderStatus((OrderStatusMessage)message); break; } case MessageTypes.OrderRegister: { ProcessOrderRegister((OrderRegisterMessage)message); break; } case MessageTypes.OrderCancel: { ProcessOrderCancel((OrderCancelMessage)message); break; } case MessageTypes.OrderGroupCancel: { ProcessOrderGroupCancel((OrderGroupCancelMessage)message); break; } case MessageTypes.Time: { if (_orderInfo.Count > 0) { ProcessOrderStatus(null); ProcessPortfolioLookup(null); } if (BalanceCheckInterval > TimeSpan.Zero && (_lastTimeBalanceCheck == null || (CurrentTime - _lastTimeBalanceCheck) > BalanceCheckInterval)) { ProcessPortfolioLookup(null); } _pusherClient?.ProcessPing(); //ProcessLevel1(); break; } case MessageTypes.SecurityLookup: { ProcessSecurityLookup((SecurityLookupMessage)message); break; } case MessageTypes.MarketData: { ProcessMarketData((MarketDataMessage)message); break; } default: return(false); } return(true); }
/// <summary> /// Send message. /// </summary> /// <param name="message">Message.</param> protected override void OnSendInMessage(Message message) { switch (message.Type) { case MessageTypes.Reset: { _lastMyTradeId = 0; _hasActiveOrders = false; _hasMyTrades = false; _requestOrderFirst = false; _prevLevel1Time = default(DateTimeOffset); if (_httpClient != null) { try { _httpClient.Dispose(); } catch (Exception ex) { SendOutError(ex); } _httpClient = null; } if (_pusherClient != null) { try { DisposePusherClient(); } catch (Exception ex) { SendOutError(ex); } _pusherClient = null; } SendOutMessage(new ResetMessage()); break; } case MessageTypes.Connect: { if (_httpClient != null) { throw new InvalidOperationException(LocalizedStrings.Str1619); } if (_pusherClient != null) { throw new InvalidOperationException(LocalizedStrings.Str1619); } _httpClient = new HttpClient(ClientId, Key, Secret); _pusherClient = new PusherClient(); _pusherClient.PusherConnected += SessionOnPusherConnected; _pusherClient.PusherDisconnected += SessionOnPusherDisconnected; _pusherClient.PusherError += SessionOnPusherError; _pusherClient.NewOrderBook += SessionOnNewOrderBook; _pusherClient.NewTrade += SessionOnNewTrade; _pusherClient.ConnectPusher(); break; } case MessageTypes.Disconnect: { if (_httpClient == null) { throw new InvalidOperationException(LocalizedStrings.Str1856); } if (_pusherClient == null) { throw new InvalidOperationException(LocalizedStrings.Str1856); } DisposePusherClient(); _pusherClient = null; _httpClient.Dispose(); _httpClient = null; break; } case MessageTypes.PortfolioLookup: { ProcessPortfolioLookup((PortfolioLookupMessage)message); break; } case MessageTypes.OrderStatus: { _lastMyTradeId = 0; _hasActiveOrders = true; _hasMyTrades = true; _requestOrderFirst = true; ProcessOrderStatus(); break; } case MessageTypes.OrderRegister: { ProcessOrderRegister((OrderRegisterMessage)message); break; } case MessageTypes.OrderCancel: { ProcessOrderCancel((OrderCancelMessage)message); break; } case MessageTypes.Time: { if (_hasActiveOrders || _hasMyTrades) { ProcessOrderStatus(); ProcessPortfolioLookup(null); } ProcessLevel1(); break; } case MessageTypes.SecurityLookup: { ProcessSecurityLookup((SecurityLookupMessage)message); break; } case MessageTypes.MarketData: { ProcessMarketData((MarketDataMessage)message); break; } } }
public CompleteChoreHandler(PusherClient pusher) { _pusher = pusher; }
void HandleConnectionStateChanged(object sender, PusherClient.ConnectionState state) { Debug.Log ( "Pusher connection state changed to: " + state ); }