public void RegisterOuterEventSubscriber(string sessionId, string topic, SubscriberLocation location) { if (subscribers.ContainsKey(sessionId + topic)) { return; } if (!events.ContainsKey(topic)) { throw new ArgumentException("系统中没有topic为 [" + topic + "] 的事件"); } EventCollector collector; if (eventCollectors.ContainsKey(sessionId)) { collector = eventCollectors[sessionId]; } else { collector = new EventCollector(); eventCollectors.Add(sessionId, collector); } collector.RegisterEvent(topic, events[topic].EventInfo, kernel[events[topic].EventInfo.DeclaringType]); EventSubscriberInfo subInfo = new EventSubscriberInfo(topic, location, "", ""); AddEventSubscriber(sessionId + topic, subInfo); if (!outerSubscriberMapping.ContainsKey(sessionId)) { outerSubscriberMapping.Add(sessionId, new List <string>()); } outerSubscriberMapping[sessionId].Add(topic); AddOuterSubscriberToPublisherInfo(sessionId + topic, subInfo); db.Store(new OuterEventInfo(sessionId, topic, location)); }
public void RegisterOuterEventSubscriber(string sessionId, string topic, SubscriberLocation location) { if (subscribers.ContainsKey(sessionId + topic)) return; if (!events.ContainsKey(topic)) throw new ArgumentException("系统中没有topic为 [" + topic + "] 的事件"); EventCollector collector; if (eventCollectors.ContainsKey(sessionId)) collector = eventCollectors[sessionId]; else { collector = new EventCollector(); eventCollectors.Add(sessionId, collector); } collector.RegisterEvent(topic, events[topic].EventInfo, kernel[events[topic].EventInfo.DeclaringType]); EventSubscriberInfo subInfo = new EventSubscriberInfo(topic, location, "", ""); AddEventSubscriber(sessionId + topic, subInfo); if (!outerSubscriberMapping.ContainsKey(sessionId)) outerSubscriberMapping.Add(sessionId, new List<string>()); outerSubscriberMapping[sessionId].Add(topic); AddOuterSubscriberToPublisherInfo(sessionId + topic, subInfo); db.Store(new OuterEventInfo(sessionId, topic, location)); }