コード例 #1
0
        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
            }
        }
コード例 #2
0
 protected override void ProcessTimeoutRequest(EMessage msg)
 {
     if (msg.HasFlag(StatusCode.Letter))
     {
         this.TransmissionErrorEvent(msg as EMLetter, "request to timeout.");
     }
 }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
 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}");
     }
 }