Esempio n. 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="acDomain"></param>
        /// <param name="context"></param>
        public static MessageContext Create(IAcDomain acDomain, HecpContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }
            var commandContext = new MessageContext(acDomain, AnyMessage.Create(context.Request, acDomain.NodeHost.Nodes.ThisNode));

            foreach (var act in context)
            {
                commandContext.Trace(act);
            }
            return(commandContext);
        }
Esempio n. 2
0
        /// <summary>
        /// 应用Hecp管道过滤器,通过返回结果表达当前Hecp请求是否被处理过了,如果处理过了则就转到响应流程了。
        /// </summary>
        /// <returns></returns>
        public ProcessResult ApplyPreHecpRequestFilters(HecpContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }
            var result = new ProcessResult(context.Response.IsSuccess, context.Response.Body.Event.Status, context.Response.Body.Event.Description);

            foreach (var requestFilter in PreHecpRequestFilters)
            {
                result = requestFilter(context);
                if (context.Response.IsClosed) break;
            }

            return result;
        }
Esempio n. 3
0
        /// <summary>
        /// 处理任何命令
        /// </summary>
        /// <param name="request">请求</param>
        /// <returns></returns>
        public Message Any(Message request)
        {
            try
            {
                var context = new HecpContext(acDomain, HecpRequest.Create(acDomain, request));
                acDomain.NodeHost.HecpHandler.Process(context);

                return(context.Response.ToMessage());
            }
            catch (Exception ex)
            {
                acDomain.LoggingService.Error(ex);
                var r = new Message
                {
                    MessageType = MessageType.Event.ToName(),
                    MessageId   = string.Empty
                };
                r.Body.Event.Description  = "服务器内部逻辑异常";
                r.Body.Event.Status       = 500;
                r.Body.Event.ReasonPhrase = Status.InternalServerError.ToString();// 不使用ToName扩展方法以避免造成新的异常

                return(r);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 应用Hecp管道过滤器,通过返回结果表达当前Hecp请求是否被处理过了,如果处理过了则就转到响应流程了。
        /// </summary>
        /// <returns></returns>
        public ProcessResult ApplyPreHecpRequestFilters(HecpContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }
            var result = new ProcessResult(context.Response.IsSuccess, context.Response.Body.Event.Status, context.Response.Body.Event.Description);

            foreach (var requestFilter in PreHecpRequestFilters)
            {
                result = requestFilter(context);
                if (context.Response.IsClosed) break;
            }

            return result;
        }
Esempio n. 5
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="acDomain"></param>
 /// <param name="context"></param>
 public static MessageContext Create(IAcDomain acDomain, HecpContext context)
 {
     if (context == null)
     {
         throw new ArgumentNullException("context");
     }
     var commandContext = new MessageContext(acDomain, AnyMessage.Create(context.Request, acDomain.NodeHost.Nodes.ThisNode));
     foreach (var act in context)
     {
         commandContext.Trace(act);
     }
     return commandContext;
 }
Esempio n. 6
0
        /// <summary>
        /// 处理任何命令
        /// </summary>
        /// <param name="request">请求</param>
        /// <returns></returns>
        public Message Any(Message request)
        {
            try
            {
                var context = new HecpContext(acDomain, HecpRequest.Create(acDomain, request));
                acDomain.NodeHost.HecpHandler.Process(context);

                return context.Response.ToMessage();
            }
            catch (Exception ex)
            {
                acDomain.LoggingService.Error(ex);
                var r = new Message
                {
                    MessageType = MessageType.Event.ToName(),
                    MessageId = string.Empty
                };
                r.Body.Event.Description = "服务器内部逻辑异常";
                r.Body.Event.Status = 500;
                r.Body.Event.ReasonPhrase = Status.InternalServerError.ToString();// 不使用ToName扩展方法以避免造成新的异常

                return r;
            }
        }
Esempio n. 7
0
 public ProcessResult ApplyHecpResponseFilters(HecpContext context)
 {
     return(ProcessResult.Ok);
 }
Esempio n. 8
0
 public ProcessResult ApplyPreHecpRequestFilters(HecpContext context)
 {
     return(ProcessResult.Ok);
 }