Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 /// <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);
 }