Exemple #1
0
        /// <summary>
        /// 获得处理函数
        /// </summary>
        /// <typeparam name="TMessage"></typeparam>
        /// <param name="mq"></param>
        /// <returns></returns>
        public static Action <TMessage> Get <TMessage>(this IMQ mq)
        {
            Action <TMessage> actionMessage = null;

            var key = NameUtils.Get <TMessage>();

            object @object = null;

            if (GetSotrage(mq).TryGetValue(key, out @object))
            {
                actionMessage = @object as Action <TMessage>;
            }

            if (actionMessage == null)
            {
                return(m =>
                {
                    var log = ServiceFacade.Provider
                              .GetService <ILog <IMQ> >();
                    log?.Info($"订阅函数:\"{key}\"不存在");
                });
            }
            else
            {
                return(actionMessage);
            }
        }
Exemple #2
0
        /// <summary>
        /// 添加事件处理
        /// </summary>
        /// <typeparam name="TMessage"></typeparam>
        /// <param name="mq"></param>
        /// <param name="action"></param>
        /// <returns></returns>
        public static void Add <TMessage>(this IMQ mq, Action <TMessage> action)
        {
            Action <TMessage> actionMessage = null;

            var key = NameUtils.Get <TMessage>();

            object @object;

            lock (_store)
            {
                var dic = GetSotrage(mq);

                if (dic.TryGetValue(key, out @object))
                {
                    actionMessage  = @object as Action <TMessage>;
                    actionMessage += action;
                }
                else
                {
                    actionMessage = action;
                }
                dic[key] = actionMessage;
                //_store.AddOrUpdate(key, actionMessage, (a, b) => actionMessage);
            }
        }
Exemple #3
0
        /// <summary>
        /// 消息是否被订阅过,<see cref="bool.TrueString"/>订阅过,<see cref="bool.FalseString"/>尚未订阅
        /// </summary>
        /// <typeparam name="TMessage"></typeparam>
        /// <param name="mq"></param>
        /// <returns></returns>
        public static bool IsExist <TMessage>(this IMQ mq)
        {
            var key = NameUtils.Get <TMessage>();

            return(_store.ContainsKey(key));
        }