private void ChangeStatus(AgentMetadata agent, AgentState agentState) { if (agent == null) return; var oldStatus = agent.Status; ((IAgentStateSetter)agent).Status = agentState; if (oldStatus != agentState) { log.Debug(string.Format("Agent '{0}' state was changed from {1} to {2}", agent.Address, oldStatus, agentState)); } if (oldStatus != AgentState.Ready && agentState == AgentState.Ready) ReadyAgentAppeared.SafeInvoke(this, EventArgs.Empty); else if (!oldStatus.IsOneOf(new[]{AgentState.Disconnected, AgentState.Error}) && agentState.IsOneOf(new[]{AgentState.Disconnected, AgentState.Error})) { ClientDisconnectedOrFailed.SafeInvoke(this, EventArgs.Empty); } }