static ServerConnection() { var status = ConfigurationManager.AppSettings["DisconnectedStatus"]; if (!string.IsNullOrEmpty(status)) { var parts = status.Split(';'); disconnectedStatus = new ClientSta { status = parts[0].ToEnum <StatusEnum>(), statusmsg = parts.Length > 1 ? parts[1] : "" }; } }
public ServerConnection(IChatManager chatManager, IBufferManager buffer, CharacterManager characterManager, ChannelManager channelManager) { this.chatManager = chatManager; this.buffer = buffer; this.characterManager = characterManager; this.channelManager = channelManager; statusTimer.Elapsed += delegate { lock (statusTimer) { Send(ClientCommandType.STA, newStatus); newStatus = null; lastStatusTime = DateTime.Now; } }; chatManager.CommandReceived += OnServerCommandReceived; chatManager.Connected += OnConnectComplete; }
private void OnClientMessage(ClientCommand command) { switch (command.Type) { case ClientCommandType.PIN: return; case ClientCommandType.PRI: case ClientCommandType.MSG: buffer.ClearBuffer(); break; case ClientCommandType.STA: customStatus = command.Payload.ToObject <ClientSta>(); SetStatus(customStatus); return; } Send(command); }
private void SetStatus(ClientSta status) { lock (statusTimer) { if (newStatus != null) { newStatus = status; return; } var now = DateTime.Now; if (lastStatusTime != null && now - lastStatusTime < statusInterval) { newStatus = status; statusTimer.Start(); statusTimer.AutoReset = false; } else { Send(ClientCommandType.STA, status); lastStatusTime = DateTime.Now; } } }