private Message CreateStatusMessage(VPN.ServiceStatus status, string lastError) { Message message = Message.Obtain(null, AndroidVPNService.MSG_STATUS, (int)status, 0); message.Data.PutString(MSG_STATUS_BUNDLE_LAST_ERROR, lastError); return(message); }
/* * private void OnStop() * { * try * { * SendStopMessage(); * OnStatusChanged(VPN.ServiceStatus.Stopped); * } * catch(Exception e) * { * OnStatusChanged(VPN.ServiceStatus.Stopped, e.Message); * } * } */ private void OnStatusChanged(bool?ready, VPN.ServiceStatus?status = null, string error = "") { lock (m_dataSync) { if (ready != null) { m_ready = ready.Value; } else { ready = m_ready; } if (status != null) { m_status = status.Value; } else { status = m_status; } m_lastError = error; } if (StatusChanged != null) { StatusChanged(ready.Value, status.Value, error); } }
private void RefreshUI(bool ready, VPN.ServiceStatus status, string error) { if (ready) { m_status.Text = "Status: " + status.ToString(); } else { m_status.Text = "Initializing..."; } m_buttonStart.IsEnabled = ready && (status == VPN.ServiceStatus.Stopped); m_buttonStop.IsEnabled = (status == VPN.ServiceStatus.Starting) || (status == VPN.ServiceStatus.Started); UpdateLastError(error); }
private void DoChangeStatus(VPN.ServiceStatus status) { string lastError = ""; lock (m_dataSync) { if (m_status == status) { return; } m_status = status; lastError = m_lastError; } DispatchMessage(CreateStatusMessage(status, lastError)); }
private void OnServiceStatusChanged(bool ready, VPN.ServiceStatus status, string error) { Device.BeginInvokeOnMainThread(() => RefreshUI(ready, status, error)); }