private void Handler_HasCome(object sender, Message msg) { _toServiceMessenger = Utils.GetAnswerMessenger(msg); switch ((ServiceOperation)msg.What) { case ServiceOperation.GetClientSettings: _callbacks.Dequeue(ServiceOperation.GetClientSettings, Utils.GetData <ConnectionCredentials>(msg)); break; case ServiceOperation.GetIsConnected: _callbacks.Dequeue(ServiceOperation.GetIsConnected, Utils.GetData <ManagerConnectionState>(msg)); break; case ServiceOperation.GetScenarios: _callbacks.Dequeue(ServiceOperation.GetScenarios, Utils.GetData <ScenarioInfo[]>(msg)); break; case ServiceOperation.GetNotifications: _callbacks.Dequeue(ServiceOperation.GetNotifications, Utils.GetData <LazuriteNotification[]>(msg)); break; case ServiceOperation.ConnectionLost: ConnectionLost?.Invoke(); break; case ServiceOperation.ConnectionRestored: ConnectionRestored?.Invoke(); break; case ServiceOperation.CredentialsInvalid: LoginOrPasswordInvalid?.Invoke(); break; case ServiceOperation.CredentialsLoaded: CredentialsLoaded?.Invoke(); break; case ServiceOperation.NeedClientSettings: NeedClientSettings?.Invoke(); break; case ServiceOperation.NeedRefresh: NeedRefresh?.Invoke(); break; case ServiceOperation.ScenariosChanged: ScenariosChanged?.Invoke(Utils.GetData <ScenarioInfo[]>(msg)); break; case ServiceOperation.SecretCodeInvalid: SecretCodeInvalid?.Invoke(); break; case ServiceOperation.ConnectionError: ConnectionError?.Invoke(); break; } }
public void GetClientSettings(Action <ConnectionCredentials> callback) { if (_credentials == null) { NeedClientSettings?.Invoke(); _getClientSettingsCallbackCrutch = callback; } else { callback(_credentials.Value); } }
public void RefreshIteration() { if (_iterationRefreshNow) { return; } _iterationRefreshNow = true; try { //recreate connection if error if (_credentials == null) { NeedClientSettings?.Invoke(); _iterationRefreshNow = false; } else { if (!_succeed) { RecreateConnection(); } _refreshEndingToken = new CancellationTokenSource(); _refreshEndingToken.Token.Register(() => { _iterationRefreshNow = false; }); SyncAddictionalData(success => { _succeed = success; if (IsMultiples(_refreshIncrement, ScenariosManagerFullRefreshInterval) || Scenarios == null) { Refresh(success2 => { _succeed = success2; _refreshEndingToken.Cancel(); }); } else { Update(success2 => { _succeed = success2; _refreshEndingToken.Cancel(); }); } }); } _refreshIncrement++; } catch (Exception e) { Log.Error("Error in listen changes iteration", e); } }
public void Initialize(Action <bool> callback) { TryLoadClientSettings(); if (_credentials != null) { InitializeInternal(callback); } else { callback?.Invoke(false); NeedClientSettings?.Invoke(); } }