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); }
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); }
/// <summary> /// Метод подписки на события журнала. /// </summary> /// <param name="filter">Фильтр событий.</param> /// <param name="channel">Канал передачи событий.</param> /// <param name="receiveEventHandler">Обработчик события получения данных в канал. Необязательный параметр.</param> /// <param name="cookie">Идентификатор подписки.</param> public void Subscribe(IEventFilter filter, out IReceiverChannel channel, DataReceiveEventHandler receiveEventHandler, out Guid cookie) { cookie = SubscribeCore(filter, receiveEventHandler, out channel); }