private Guid SubscribeCore(IEventFilter filter, DataReceiveEventHandler receiveEventHandler, out IReceiverChannel channel) { Guid cookie; // создаем канал ответа (интегральный) var localChannel = UnitySingleton.Resolve <ITransport>().CreateIntegralChannel(); channel = (IReceiverChannel)localChannel; // создаем кук cookie = Guid.NewGuid(); // подписываемся на событие прихода данных по каналу if (receiveEventHandler != null) { channel.DataReceived += receiveEventHandler; } // посылаем команду в Blackboard _localBlackboard.Subscribe(filter, localChannel as ISenderChannel, cookie); return(cookie); }
/// <summary> /// Метод подписки на события журнала. /// </summary> /// <param name="filter">Фильтр событий.</param> /// <param name="channel">Канал передачи событий.</param> /// <param name="cookie">Идентификатор подписки.</param> void ISrvcBlackboard.Subscribe(IEventFilter filter, ChannelDescription channel, Guid cookie) { Logger.Debug("ISrvcBlackboard.Subscribe: подписался {0}", cookie); // создаем канал ISenderChannel ch = channel != null?UnitySingleton.Resolve <ITransport>().CreateSenderChannel(channel) : null; _subsribeTask.Run(() => (this as IBlackboard).Subscribe(filter, ch, cookie)); }
/// <summary> /// Метод подписки на события журнала. /// </summary> /// <param name="filter">Фильтр событий.</param> /// <param name="channel">Канал передачи событий.</param> /// <param name="cookie">Идентификатор подписки.</param> void IBlackboard.Subscribe(IEventFilter filter, ISenderChannel channel, Guid cookie) { // локальный подписчик if (filter.Host == UnitySingleton.Resolve <ITransport>().HostID) { // добавляем нового подписчика в карту _localEventsSubscribers.Add(cookie, filter, channel); } }
void StopTracking() { foreach (var guid in _listCookies2Unsubscribe) { UnitySingleton.Resolve <IBlackboardWrapper>().Unsubscribe(guid); } _listCookies2Unsubscribe.Clear(); }
public void SubscribeEvent(IEnumerable <Guid> guidEventIds, DataReceiveEventHandler handler) { var filter = new EventFilter(); filter.Types.AddRange(guidEventIds); Guid guidEventCookie; IReceiverChannel eventChannel; UnitySingleton.Resolve <IBlackboardWrapper>().Subscribe(filter, out eventChannel, handler, out guidEventCookie); _listCookies2Unsubscribe.Add(guidEventCookie); }
private void OnGenerationEvent1() { EventGenerationTimer1.Change(Timeout.Infinite, 0); try { ++_eventCount; var newTime = DateTime.Now; //var eventParams = new List<Event.EventParam> //{ // new Event.EventParam("%s", "UserEvent"), // new Event.EventParam("%Count", (_eventCount).ToString()),//count // new Event.EventParam("%Time", newTime.ToString(CultureInfo.InvariantCulture))//time //}; var eventData = new EventData("UserEvent", _eventCount, newTime); var newEvent = new Event(EventTypes.UserEvent, TestId, eventData); UnitySingleton.Resolve <IBlackboardWrapper>().PublishEvent(newEvent); } finally { EventGenerationTimer1.Change(EventGenerationDelay1, EventGenerationDelay1); } }
/// <summary> /// Идентификатор хоста. /// </summary> Guid ISrvcBlackboard.GetHostID() { Logger.Debug("ISrvcBlackboard.GetHostID: Запросили HostId"); return(UnitySingleton.Resolve <ITransport>().HostID); }