Ejemplo 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);
        }
Ejemplo n.º 2
0
        /// <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));
        }
Ejemplo n.º 3
0
 /// <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);
     }
 }
Ejemplo n.º 4
0
        void StopTracking()
        {
            foreach (var guid in _listCookies2Unsubscribe)
            {
                UnitySingleton.Resolve <IBlackboardWrapper>().Unsubscribe(guid);
            }

            _listCookies2Unsubscribe.Clear();
        }
Ejemplo n.º 5
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);
        }
Ejemplo n.º 6
0
        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);
            }
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Идентификатор хоста.
 /// </summary>
 Guid ISrvcBlackboard.GetHostID()
 {
     Logger.Debug("ISrvcBlackboard.GetHostID: Запросили HostId");
     return(UnitySingleton.Resolve <ITransport>().HostID);
 }