internal SubscriberInfo(IMessageSubscriber Subscriber) { SubscriberType = Subscriber.GetType(); Instance = Subscriber; Roles = new RoleSet(SubscriberType); _ObservedSet = new UniqueSet <IMessageSubscriber>(); }
public void Deliver() { UniqueSet <MessageDelivery> tmp = _PendingDelivery; _ActiveDelivery.Clear(); _PendingDelivery = _ActiveDelivery; tmp.EachDo((MessageDelivery msgDel) => { msgDel.Handler.CallHandler(msgDel.Msg); }); _ActiveDelivery = tmp; }
private UniqueSet <MessageDelivery> _PendingDelivery, _ActiveDelivery; // for swapping an acti public MessageBus() { lock (typeof(MessageBus)) { if (!__Initialised) { RoleSet.Init(); __Initialised = true; } } _MessageHandlers = new Groups <SubscriberInfo, HandlerInfo>(); _PendingDelivery = new UniqueSet <MessageDelivery>(); _ActiveDelivery = new UniqueSet <MessageDelivery>(); _Logger = new Logger(); }