/// <summary> /// 设置Api行为返回的任务异常 /// </summary> /// <param name="taskSetActionTable">任务行为表</param> /// <param name="requestContext">请求上下文</param> /// <returns></returns> public static bool SetApiActionTaskException(TaskSetterTable <long> 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, TaskSetterTable <long> 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))); } }