/// <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); }
/// <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; }
/// <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); } }
/// <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; }
/// <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; }
/// <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; } }
public ProcessResult ApplyHecpResponseFilters(HecpContext context) { return(ProcessResult.Ok); }
public ProcessResult ApplyPreHecpRequestFilters(HecpContext context) { return(ProcessResult.Ok); }