/// <summary>
/// Updates the status control when a keep alive event occurs.
/// </summary>
void StandardClient_KeepAlive(Session sender, KeepAliveEventArgs e)
{
if (InvokeRequired)
{
BeginInvoke(new KeepAliveEventHandler(StandardClient_KeepAlive), sender, e);
return;
}
else if (!IsHandleCreated)
{
return;
}
if (sender != null && sender.Endpoint != null)
{
ServerUrlLB.Text = Utils.Format(
"{0} ({1}) {2}",
sender.Endpoint.EndpointUrl,
sender.Endpoint.SecurityMode,
(sender.EndpointConfiguration.UseBinaryEncoding)?"UABinary":"XML");
}
else
{
ServerUrlLB.Text = "None";
}
if (e != null && m_session != null)
{
if (ServiceResult.IsGood(e.Status))
{
ServerStatusLB.Text = Utils.Format(
"Server Status: {0} {1:yyyy-MM-dd HH:mm:ss} {2}/{3}",
e.CurrentState,
e.CurrentTime.ToLocalTime(),
m_session.OutstandingRequestCount,
m_session.DefunctRequestCount);
ServerStatusLB.ForeColor = Color.Empty;
ServerStatusLB.Font = new Font(ServerStatusLB.Font, FontStyle.Regular);
}
else
{
ServerStatusLB.Text = String.Format(
"{0} {1}/{2}", e.Status,
m_session.OutstandingRequestCount,
m_session.DefunctRequestCount);
ServerStatusLB.ForeColor = Color.Red;
ServerStatusLB.Font = new Font(ServerStatusLB.Font, FontStyle.Bold);
if (m_reconnectPeriod <= 0)
{
return;
}
if (m_reconnectHandler == null && m_reconnectPeriod > 0)
{
m_reconnectHandler = new SessionReconnectHandler();
m_reconnectHandler.BeginReconnect(m_session, m_reconnectPeriod * 1000, StandardClient_Server_ReconnectComplete);
}
}
}
}