/// <summary> /// 追加普通管道 /// </summary> /// <typeparam name="TOut"></typeparam> /// <typeparam name="TNextOut"></typeparam> /// <typeparam name="TNextPara"></typeparam> /// <typeparam name="TNextRes"></typeparam> /// <param name="pipe"></param> /// <param name="nextPipe"></param> /// <returns></returns> public static BaseFourWayPipe <TOut, TNextPara, TNextRes, TNextOut> Append <TOut, TNextPara, TNextRes, TNextOut>( this IPipeAppender <TOut> pipe, BaseFourWayPipe <TOut, TNextPara, TNextRes, TNextOut> nextPipe) { pipe.InterAppend(nextPipe); return(nextPipe); }
/// <summary> /// 追加默认消息订阅者管道 /// </summary> /// <typeparam name="TMsg"></typeparam> /// <param name="pipe"></param> /// <param name="msgDataKey">消息pipeDataKey,默认对应的flow是异步线程池</param> /// <returns></returns> public static BaseMsgSubscriber <TMsg> AppendMsgSubscriber <TMsg>(this IPipeAppender pipe, string msgDataKey) { var nextPipe = new SimpleMsgSubscriber <TMsg>(msgDataKey); pipe.InterAppend(nextPipe); return(nextPipe); }
/// <summary> /// 追加默认消息流管道 /// </summary> /// <typeparam name="TMsg"></typeparam> /// <param name="pipe"></param> /// <param name="msgDataKey">消息pipeDataKey,默认对应的flow是异步线程池</param> /// <param name="option"></param> /// <returns></returns> public static BaseMsgFlow <TMsg> AppendMsgFlow <TMsg>(this IPipeAppender <TMsg> pipe, string msgDataKey, DataFlowOption option = null) { var nextPipe = new SimpleMsgFlow <TMsg>(msgDataKey, option); pipe.InterAppend(nextPipe); return(nextPipe); }
/// <summary> /// 追加默认消息转换管道 /// </summary> /// <typeparam name="TMsg"></typeparam> /// <typeparam name="NextOutContext"></typeparam> /// <param name="pipe"></param> /// <param name="convertFunc"></param> /// <param name="pipeCode"></param> /// <returns></returns> public static BaseMsgConverter <TMsg, NextOutContext> AppendMsgConverter <TMsg, NextOutContext>( this IPipeAppender <TMsg> pipe, Func <TMsg, NextOutContext> convertFunc, string pipeCode = null) { var nextPipe = new InterMsgConvertor <TMsg, NextOutContext>(pipeCode, convertFunc); pipe.InterAppend(nextPipe); return(nextPipe); }
/// <summary> /// 追加消息迭代器 /// </summary> /// <typeparam name="TMsg">消息具体类型</typeparam> /// <param name="pipe"></param> /// <param name="pipeCode"></param> /// <param name="msgFilter">消息过滤器</param> /// <returns></returns> public static MsgEnumerator <TMsg> AppendMsgEnumerator <TMsg>( this IPipeAppender <IEnumerable <TMsg> > pipe, string pipeCode = null, Func <IEnumerable <TMsg>, IEnumerable <TMsg> > msgFilter = null) { var nextPipe = new MsgEnumerator <TMsg>(pipeCode, msgFilter); pipe.InterAppend(nextPipe); return(nextPipe); }
/// <summary> /// 追加默认消息发布者管道 /// </summary> /// <typeparam name="TMsg"></typeparam> /// <param name="pipe"></param> /// <param name="pushKeyGenerator">消息key生成器,为空则使用pipeCode作为发布消息key</param> /// <param name="option"></param> /// <returns></returns> public static void AppendMsgPublisher <TMsg>(this IPipeAppender <TMsg> pipe, Func <TMsg, string> pushKeyGenerator, DataPublisherOption option = null) { var nextPipe = new SimpleMsgPublisher <TMsg>(string.Empty, pushKeyGenerator, option); pipe.InterAppend(nextPipe); }
/// <summary> /// 追加默认消息发布者管道 /// </summary> /// <typeparam name="TMsg"></typeparam> /// <param name="pipe"></param> /// <param name="msgDataKey">消息pipeDataKey,默认消息实现对应的flow是异步线程池</param> /// <param name="option"></param> /// <returns></returns> public static void AppendMsgPublisher <TMsg>(this IPipeAppender <TMsg> pipe, string msgDataKey, DataPublisherOption option = null) { var nextPipe = new SimpleMsgPublisher <TMsg>(msgDataKey, null, option); pipe.InterAppend(nextPipe); }
/// <summary> /// 追加枚举器 /// </summary> /// <typeparam name="TMsg">消息具体类型</typeparam> /// <param name="pipe"></param> /// <param name="nextPipe"></param> /// <returns></returns> public static MsgEnumerator <TMsg> Append <TMsg>(this IPipeAppender <IEnumerable <TMsg> > pipe, MsgEnumerator <TMsg> nextPipe) { pipe.InterAppend(nextPipe); return(nextPipe); }
/// <summary> /// 链接流体内部尾部管道和流体外下一截管道 /// </summary> /// <param name="nextPipe"></param> internal override void InterAppend(IPipeInPart <TOut> nextPipe) { base.InterAppend(nextPipe); // 保证路由初始化,本身next节点不会被执行 _endPipe.InterAppend(nextPipe); // 保证业务执行 }
/// <summary> /// 追加发布消息管道 /// </summary> /// <typeparam name="TOut"></typeparam> /// <typeparam name="TNextOut"></typeparam> /// <typeparam name="TNextPara"></typeparam> /// <typeparam name="TNextRes"></typeparam> /// <param name="pipe"></param> /// <param name="nextPipe"></param> /// <returns></returns> public static void Append <TOut, TNextPara, TNextRes, TNextOut>(this IPipeAppender <TOut> pipe, BaseMsgPublisher <TOut> nextPipe) { pipe.InterAppend(nextPipe); }