public async Task <bool> Close() { await Task.Run(() => ClientSocket.Dispose()); _Status = BrokerConnectionStatus.Disconnected; return(true); }
public async Task <bool> Reconnect() { if (_Status == BrokerConnectionStatus.Connected || _Status == BrokerConnectionStatus.Connecting) { return(true); } _ = await Close(); ReinitializeSocket(); _Status = BrokerConnectionStatus.Connecting; try { await ClientSocket.ConnectAsync( new HostName(uri.Host), uri.Port.ToString(), SocketProtectionLevel.PlainSocket ); _Status = BrokerConnectionStatus.Connected; } catch (Exception) { _Status = BrokerConnectionStatus.Disconnected; throw new Exception($"failed to connect to {uri.Host}:{uri.Port}"); } return(true); }
private void ReinitializeSocket() { var IrpLocation = ApplicationData.Current.LocalSettings.Values.ContainsKey("IrpBrokerLocation") ? ApplicationData.Current.LocalSettings.Values["IrpBrokerLocation"].ToString() : Models.DefaultSettings.IrpBrokerUri; uri = new Uri(IrpLocation); ClientSocket = new StreamSocket(); ClientSocket.Control.KeepAlive = true; ClientSocket.Control.NoDelay = false; _Status = BrokerConnectionStatus.Disconnected; }