internal static RpcError?TryCreate(Exception e, IRpcSerializer?serializer)
        {
            switch (e)
            {
            case RpcServiceUnavailableException _:
                return(new RpcError
                {
                    ErrorType = WellKnownRpcErrors.ServiceUnavailable,
                    Message = e.Message
                });

            case RpcFaultException faultException:
                var rpcError = new RpcError
                {
                    ErrorType = WellKnownRpcErrors.Fault,
                    ErrorCode = faultException.FaultCode,
                    Message   = faultException.Message
                };
                if (serializer != null)
                {
                    rpcError.ErrorDetails = faultException.SerializeDetails(serializer);
                }

                return(rpcError);

            case RpcFailureException failureException:
                return(new RpcError
                {
                    ErrorType = WellKnownRpcErrors.Failure,
                    ErrorCode = failureException.Failure.ToString(),
                    Message = failureException.Message
                });
            }

            return(null);
        }
Exemple #2
0
 internal RpcErrorException(RpcError error)
     : base(error.Message)
 {
     this.Error = error;
 }