示例#1
0
        internal void Publish <TBusHanlder, TPackMessage, TMessage>(TPackMessage message) where TPackMessage : MessagePack
        {
            Type type = typeof(TMessage);

            if (!Containers.TryGetValue(type, out object val))
            {
                return;
            }

            IMessageTypeHandler <TBusHanlder, TPackMessage, TMessage> handler = val as IMessageTypeHandler <TBusHanlder, TPackMessage, TMessage>;

            if (handler == null)
            {
                throw new InvalidOperationException($"Not found handler for {type}:{message.Name}");
            }

            handler.Execute(message);
        }
示例#2
0
        internal void Unsubscribe <TBusHanlder, TPackMessage, TMessage>(TBusHanlder handler, string name = "default") where TPackMessage : MessagePack
        {
            if (handler == null)
            {
                return;
            }
            Type type = typeof(TMessage);

            if (!Containers.TryGetValue(type, out object val))
            {
                return;
            }

            IMessageTypeHandler <TBusHanlder, TPackMessage, TMessage> typeHandler = val as IMessageTypeHandler <TBusHanlder, TPackMessage, TMessage>;

            if (typeHandler == null)
            {
                throw new InvalidOperationException($"Not found handler for {type}:{name}");
            }

            typeHandler.Remove(handler, name);
        }