protected override void ProcessTimeoutRequest(EMessage msg) { if (msg.HasFlag(StatusCode.Duplex)) // client refused a command { Response(new EMError(GetEnvelope(), $"client did not response command '{msg.ID}' in time, the connection was cut off.")); GetControl(ThreadType.WatchDog).SafeAbort(); } else if (msg.HasFlag(StatusCode.Letter)) { // pass } }
protected override void ProcessTimeoutRequest(EMessage msg) { if (msg.HasFlag(StatusCode.Letter)) { this.TransmissionErrorEvent(msg as EMLetter, "request to timeout."); } }
protected override void ProcessRequest(ref EMessage msg) { if (msg.HasFlag(StatusCode.Letter)) { var replyLetter = this.IncomingLetterEvent?.Invoke(msg as EMLetter); if (replyLetter == null) { msg = new EMessage(msg, StatusCode.Ok); } else { replyLetter.SetEnvelope(new Envelope(msg.ID)); msg = replyLetter; } } else if (msg.HasFlag(StatusCode.Push)) { if (msg.HasFlag(StatusCode.Denied)) // error message { var errorMsg = msg as EMError; this.ClientAgentEvent?.Invoke(this, new ClientAgentEventArgs(ClientAgentEventType.Error, errorMsg.Text, "server notification")); this.SetOfflineState(); msg = new EMessage(msg, StatusCode.Ok); } } else { msg = new EMessage(msg, StatusCode.Ok); } }
protected override void ProcessResponse(EMessage requestMsg, EMessage responseMsg) { if (requestMsg.HasFlag(StatusCode.Letter) && responseMsg.HasFlag(StatusCode.Denied)) { var errorMsg = responseMsg as EMError; this.TransmissionErrorEvent?.Invoke(requestMsg as EMLetter, $"E{(int)errorMsg.Code}: {errorMsg.Text}"); } }