Beispiel #1
0
        public int TestException(string serverUrl, string param, RpcErrorCode exceptedCode, string errMsg)
        {
            Stopwatch watch = new Stopwatch();

            watch.Start();
            try
            {
                RpcClientProxy proxy = RpcProxyFactory.GetProxy <IRpcTestService>(serverUrl);
                proxy.Invoke <string, string>("TestException", param);

                Assert.Fail("Should Failed...");
            }
            catch (RpcException ex)
            {
                Console.WriteLine(ex.ToString());

                Assert.AreEqual(exceptedCode, ex.RpcCode);

                if (!string.IsNullOrEmpty(errMsg))
                {
                    Assert.IsTrue(ex.ToString().Contains(errMsg));
                }
            }
            int ms = (int)watch.ElapsedMilliseconds;

            Console.WriteLine("Cost Ms: {0}", ms);
            return(ms);
        }
Beispiel #2
0
 public RpcException(RpcErrorCode code, string serviceUrl, string message, Exception ex)
     : base(string.Format("RpcException<{0}> on {1} '{2}'", code, serviceUrl, message), ex)
 {
     _code       = code;
     _serviceUrl = serviceUrl;
     _message    = message;
 }
Beispiel #3
0
 public RpcException(string message, string url, BaseUri uri, RpcErrorCode code, Exception ex)
     : base(null, ex)
 {
     _message = message;
     _serviceUrl = url;
     _toUri = ObjectHelper.ToString(uri);
     _code = code;
 }
Beispiel #4
0
 private void ProcessFailedTxs(RpcBatchClientTransaction[] trans, RpcErrorCode code, Exception ex)
 {
     foreach (var tx in trans)
     {
         tx.Response = RpcResponse.Create(code, ex);
         tx.OnTransactionEnd();
     }
 }
Beispiel #5
0
 public void SetResults(int i, RpcErrorCode code, Exception ex)
 {
     _responses[i] = new RpcBatchResponse()
     {
         ErrorCode    = code,
         ResponseData = ex != null?Encoding.UTF8.GetBytes(ex.ToString()) : null
     };
 }
Beispiel #6
0
 public RpcException(string message, string url, BaseUri uri, RpcErrorCode code, Exception ex)
     : base(null, ex)
 {
     _message    = message;
     _serviceUrl = url;
     _toUri      = ObjectHelper.ToString(uri);
     _code       = code;
 }
Beispiel #7
0
 /// <param name="code">Rpc error code</param>
 /// <param name="message">Error message</param>
 /// <param name="data">Optional error data</param>
 public RpcError(RpcErrorCode code, string message, object data = null)
 {
     if (string.IsNullOrWhiteSpace(message))
     {
         throw new ArgumentNullException(nameof(message));
     }
     this.Code    = code;
     this.Message = message;
     this.Data    = data;
 }
Beispiel #8
0
 private void ProcessSendFailed(IEnumerable <IRpcTcpSendingPacket> packets, RpcErrorCode code, Exception ex)
 {
     foreach (var p in packets)
     {
         _counter.SendFailed.Increment();
         try {
             p.SendFailed(RpcErrorCode.SendFailed, ex);
         } catch (Exception e) {
             _tracing.Error(e, "ProcessSendFailed error");
         }
     }
 }
Beispiel #9
0
 public static RpcResponse Create(RpcErrorCode code, Exception ex)
 {
     if (ex != null)
     {
         var body = new RpcBodyBuffer(ex);
         return(new RpcResponse(code, body));
     }
     else
     {
         return(new RpcResponse(code, null));
     }
 }
Beispiel #10
0
        private static void ResponseCallback(IAsyncResult asyncResult)
        {
            RpcHttpClientTransaction trans  = (RpcHttpClientTransaction)asyncResult.AsyncState;
            RpcResponseHeader        header = null;

            try {
                var response = trans._webRequest.EndGetResponse(asyncResult);
                trans._webResponse = response;

                string warn = response.Headers.Get("Warning");

                if (!string.IsNullOrEmpty(warn))
                {
                    RpcErrorCode errCode = (RpcErrorCode)Enum.Parse(typeof(RpcErrorCode), warn);
                    if (errCode != RpcErrorCode.OK)
                    {
                        Exception ex = null;
                        if (response.ContentLength > 0)
                        {
                            Stream stream = response.GetResponseStream();
                            ex = BinarySerializer.Deserialize <Exception>(stream);
                        }
                        header = RpcResponseHeader.CreateError(errCode, ex);
                    }
                    else
                    {
                        SystemLog.Error(LogEventID.RpcFailed, "Unexcepted Message");
                        header = RpcResponseHeader.CreateError(RpcErrorCode.Unknown, null);
                    }
                }
                else
                {
                    bool hasBody = (response.Headers["Null"] != "true");
                    header = RpcResponseHeader.CreateSuccess(hasBody);
                }
            } catch (WebException ex) {
                if (ex.Status == WebExceptionStatus.Timeout)
                {
                    header = RpcResponseHeader.CreateError(RpcErrorCode.TransactionTimeout, ex);
                }
                else
                {
                    header = RpcResponseHeader.CreateError(RpcErrorCode.SendFailed, ex);
                }
            } catch (Exception ex) {
                header = RpcResponseHeader.CreateError(RpcErrorCode.SendFailed, ex);
            }
            trans._callback(header);
            trans._waitHandle.Set();
        }
Beispiel #11
0
        public void ReturnError(RpcErrorCode errCode, Exception ex)
        {
            var response = RpcResponseHeader.CreateError(errCode, ex);

            ReturnError(response);
        }
Beispiel #12
0
 public void SendFailed(RpcErrorCode code, Exception ex)
 {
     Response = RpcResponse.Create(code, ex);
     RpcTcpTransactionManager.EndTransaction(Sequence, Response);
 }
Beispiel #13
0
 public void SetResults(RpcErrorCode code, Exception ex)
 {
     _ctx.SetResults(_idx, code, ex);
 }
Beispiel #14
0
        public bool HasBody;                    // Body is null

        private RpcResponseHeader(bool hasBody)
        {
            ErrorCode = RpcErrorCode.OK;
            Error     = null;
            HasBody   = hasBody;
        }
Beispiel #15
0
 /// <param name="errorCode">Rpc error code</param>
 /// <param name="message">Error message</param>
 /// <param name="data">Custom data if needed for error response</param>
 /// <param name="innerException">Inner exception (optional)</param>
 protected RpcException(RpcErrorCode errorCode, string message, object data = null, Exception innerException = null) : base(message, innerException)
 {
     this.ErrorCode = errorCode;
     this.RpcData   = data;
 }
Beispiel #16
0
 public static RpcResponse Create(RpcErrorCode code, Stream stream, int streamLen)
 {
     return(new RpcResponse(code, new RpcBodyBuffer(stream, streamLen)));
 }
 public static RpcResponseHeader CreateError(RpcErrorCode code, Exception ex)
 {
     return new RpcResponseHeader(code, ex);
 }
Beispiel #18
0
        /// <summary>
        ///		返回错误到客户端
        /// </summary>
        /// <param name="errCode">错误码</param>
        /// <param name="ex">异常</param>
        public void ReturnError(RpcErrorCode errCode, Exception ex)
        {
            RpcResponse response = RpcResponse.Create(errCode, ex);

            SendResponse(response);
        }
Beispiel #19
0
 public RpcResponse(RpcErrorCode code, RpcBodyBuffer body)
 {
     ErrorCode  = code;
     BodyBuffer = body;
 }
Beispiel #20
0
 public HttpRpcClientBuilder DeserializeErrorDataAs <T>(RpcErrorCode errorCode)
 {
     return(this.DeserializeErrorDataAs <T>((int)errorCode));
 }
Beispiel #21
0
 /// <param name="errorCode">Rpc error code</param>
 /// <param name="message">Error message</param>
 /// <param name="data">Custom data if needed for error response</param>
 /// <param name="innerException">Inner exception (optional)</param>
 public RpcException(RpcErrorCode errorCode, string message, Exception?innerException = null, object?data = null)
     : this((int)errorCode, message, innerException, data)
 {
 }
Beispiel #22
0
 public RpcException(string message, string url, RpcErrorCode code, Exception ex)
     : this(message, url, null, code, ex)
 {
 }
Beispiel #23
0
 public static RpcResponseHeader CreateError(RpcErrorCode code, Exception ex)
 {
     return(new RpcResponseHeader(code, ex));
 }
Beispiel #24
0
 private RpcResponseHeader(RpcErrorCode code, Exception ex)
 {
     ErrorCode = code;
     Error     = ex;
     HasBody   = (ex != null);
 }
        public bool HasBody; // Body is null

        #endregion Fields

        #region Constructors

        private RpcResponseHeader(bool hasBody)
        {
            ErrorCode = RpcErrorCode.OK;
            Error = null;
            HasBody = hasBody;
        }
 private RpcResponseHeader(RpcErrorCode code, Exception ex)
 {
     ErrorCode = code;
     Error = ex;
     HasBody = (ex != null);
 }
Beispiel #27
0
 public RpcError(RpcErrorCode code, string message, T data)
     : base(code, message, data)
 {
 }
Beispiel #28
0
 public void ReturnError(RpcErrorCode errCode, Exception ex)
 {
     _innerCtx.ReturnError(errCode, ex);
 }
 private async Task SendErrorOutput(HttpResponse response, RpcErrorCode code)
 {
     response.ContentType = "application/json";
     await response.WriteAsync(JsonConvert.SerializeObject(FunctionOutput.WithError(code)));
 }
Beispiel #30
0
 public static RpcResponse Create(RpcErrorCode code)
 {
     return(new RpcResponse(code, null));
 }
Beispiel #31
0
 public RpcException(string message, string url, RpcErrorCode code, Exception ex)
     : this(message, url, null, code, ex)
 {
 }
Beispiel #32
0
 /// <param name="code">Rpc error code</param>
 /// <param name="message">Error message</param>
 /// <param name="data">Optional error data</param>
 public RpcError(RpcErrorCode code, string message, JToken data = null) : this((int)code, message, data)
 {
 }
Beispiel #33
0
 public void SendFailed(RpcErrorCode code, Exception ex)
 {
     // do Nothing
     _tracing.ErrorFmt(ex, "TcpServerTransaction SendFailed {0} - {1}", code, ex);
 }