/// <summary> /// 设置Api行为返回的任务结果 /// </summary> /// <param name="requestContext">上下文</param> /// <param name="taskSetActionTable">任务行为表</param> public static void SetApiActionTaskResult(RequestContext requestContext, TaskSetActionTable taskSetActionTable) { var taskSetAction = taskSetActionTable.Take(requestContext.Packet.Id); if (taskSetAction != null) { var returnBytes = requestContext.Packet.Body; taskSetAction.SetAction(SetTypes.SetReturnReult, returnBytes); } }
/// <summary> /// 设置Api行为返回的任务异常 /// 设置失败则返远程异常对象 /// </summary> /// <param name="taskSetActionTable">任务行为表</param> /// <param name="requestContext">请求上下文</param> /// <returns></returns> public static RemoteException SetApiActionTaskException(TaskSetActionTable taskSetActionTable, RequestContext requestContext) { var exceptionBytes = requestContext.Packet.Body; var taskSetAction = taskSetActionTable.Take(requestContext.Packet.Id); if (taskSetAction != null) { taskSetAction.SetAction(SetTypes.SetReturnException, exceptionBytes); return(null); } var message = Encoding.UTF8.GetString(exceptionBytes); return(new RemoteException(message)); }
/// <summary> /// 设置Api行为返回的任务异常 /// </summary> /// <param name="taskSetActionTable">任务行为表</param> /// <param name="requestContext">请求上下文</param> /// <returns></returns> public static bool SetApiActionTaskException(TaskSetActionTable taskSetActionTable, RequestContext requestContext) { var taskSetAction = taskSetActionTable.Take(requestContext.Packet.Id); if (taskSetAction == null) { return(true); } var exceptionBytes = requestContext.Packet.Body; var message = exceptionBytes == null ? string.Empty : Encoding.UTF8.GetString(exceptionBytes); var exception = new RemoteException(message); return(taskSetAction.SetException(exception)); }
/// <summary> /// 设置Api行为返回的任务结果 /// </summary> /// <param name="requestContext">上下文</param> /// <param name="taskSetActionTable">任务行为表</param> /// <param name="serializer">序列化工具</param> /// <returns></returns> public static bool SetApiActionTaskResult(RequestContext requestContext, TaskSetActionTable taskSetActionTable, ISerializer serializer) { var taskSetAction = taskSetActionTable.Take(requestContext.Packet.Id); if (taskSetAction == null) { return(true); } try { var bytes = requestContext.Packet.Body; var value = serializer.Deserialize(bytes, taskSetAction.ValueType); return(taskSetAction.SetResult(value)); } catch (SerializerException ex) { return(taskSetAction.SetException(ex)); } catch (Exception ex) { return(taskSetAction.SetException(new SerializerException(ex))); } }