示例#1
0
 /// <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);
 }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
        }
示例#5
0
        /// <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);
        }
示例#6
0
        /// <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);
        }
示例#7
0
        /// <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);
        }
示例#8
0
 /// <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);
 }
示例#9
0
 /// <summary>
 ///  链接流体内部尾部管道和流体外下一截管道
 /// </summary>
 /// <param name="nextPipe"></param>
 internal override void InterAppend(IPipeInPart <TOut> nextPipe)
 {
     base.InterAppend(nextPipe);     // 保证路由初始化,本身next节点不会被执行
     _endPipe.InterAppend(nextPipe); // 保证业务执行
 }
示例#10
0
 /// <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);
 }