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); }
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); }