private async Task<ApiResultBase> StartRealtimeConnection(ConnectExtruderModel connectExtruderModel)
        {
            try
            {
                _connection = new HubConnection(SOS_URL);
                _proxy = _connection.CreateHubProxy("SosHub");

                _proxy.On<int?, TimeSpan?>("setLights", OnSetLightsEventReceived);
                _proxy.On<int?, TimeSpan?>("setAudio", OnSetAudioEventReceived);
                _proxy.On<ModalDialogEventArgs>("modalDialog", OnModalDialogEventReceived);
                _proxy.On("forceDisconnect", OnForceDisconnect);
                _proxy.On<TrayIcon>("setTrayIcon", OnSetTrayIcon);
                _proxy.On<TrayNotifyEventArgs>("trayNotify", OnTrayNotify);
                _connection.Error += ConnectionOnError;
                _connection.StateChanged += ConnectionOnStateChanged;
                _connection.Closed += ConnectionOnClosed;
                await _connection.Start();
                var result = await _proxy.Invoke<ApiResultBase>("connectExtruder", connectExtruderModel);
                if (!result.Success)
                {
                    _connection.Stop();
                }
                return result;
            }
            catch (Exception ex)
            {
                _log.Error("Unable to start realtime connection to SoS Online", ex);
                return new ApiResultBase {Success = false, ErrorMessage = ex.Message};
            }
        }
Esempio n. 2
0
 private async Task SettingsPageOnOnToggleConnection(object sender, ToggleConnectionEventArgs args)
 {
     if (!_connectedToServer)
     {
         ConnectExtruderModel connectExtruderModel = new ConnectExtruderModel
         {
             UserName = args.UserName,
             Password = _encryptor.EncryptString(args.PlainTextPassword),
             Name = args.Name,
         };
         _settings.InitializeConnectExtruderModel(connectExtruderModel);
         bool success = await TryToConnect(connectExtruderModel);
         if (success)
         {
             SaveSettings(connectExtruderModel);
             SetPage(PageType.BrowserPage);
         }
     }
     else
     {
         TryToDisconnect();
     }
 }
 public void InitializeConnectExtruderModel(ConnectExtruderModel connectExtruderModel)
 {
     connectExtruderModel.LedPatterns = LedPatterns;
     connectExtruderModel.AudioPatterns = AudioPatterns;
 }
Esempio n. 4
0
        private ConnectExtruderModel GetConnectExtruderModel()
        {
            var result = new ConnectExtruderModel
            {
                UserName = _settings.UserName,
                Password = _settings.EncryptedPassword,
                Name = _settings.MyName,
            };

            _settings.InitializeConnectExtruderModel(result);
            return result;
        }
Esempio n. 5
0
 private void SaveSettings(ConnectExtruderModel connectExtruderModel)
 {
     _settings.UserName = connectExtruderModel.UserName;
     _settings.EncryptedPassword = connectExtruderModel.Password;
     _settings.MyName = connectExtruderModel.Name;
     _settings.Save();
 }
Esempio n. 6
0
 private async Task<bool> TryToConnect(ConnectExtruderModel connectExtruderModel)
 {
     _log.Debug("Attempting to connect as " + connectExtruderModel.UserName);
     UpdateNetworkStatus(true, "Verifying credentials");
     var result = await _sosOnlineService.ConnectExtruder(connectExtruderModel);
     if (!result.Success) {
         UpdateNetworkStatus(false, "Failed To Connect");
         MessageBox.Show(result.ErrorMessage);
     }
     return result.Success;
 }
Esempio n. 7
0
 public void InitializeConnectExtruderModel(ConnectExtruderModel connectExtruderModel)
 {
     connectExtruderModel.LedPatterns   = LedPatterns;
     connectExtruderModel.AudioPatterns = AudioPatterns;
 }
 public async Task<ApiResultBase> ConnectExtruder(ConnectExtruderModel connectExtruderModel)
 {
     return await StartRealtimeConnection(connectExtruderModel);
 }