Exemplo n.º 1
0
        /// <summary>
        /// Начать последовательный доступ к событиям
        /// </summary>
        /// <param name="fromDate">Фильтр по дате-времени, начальное значение</param>
        /// <param name="toDate">Фильтр по дате-времени, конечное значение</param>
        /// <param name="sourceFilter">Фильтр по источнику событий</param>
        /// <param name="eventFilter">Фильтр по типам событий</param>
        /// <param name="maxEvents">Максимальное количество событий</param>
        /// <param name="eventPerIteration">
        /// Максимальное количество событий, возвращаемое на каждый вызов
        /// метода IEventLinkBasics.GetLog
        /// </param>
        /// <returns>Идентификатор итератора</returns>
        public string BeginGetLog(DateTime fromDate, DateTime toDate, string[] sourceFilter,
                                  EventType[] eventFilter, int maxEvents, int eventPerIteration)
        {
            // создаем контейнер для итератора
            var iteratorContainer = new Iterators.EventsIterator(GetStorageName);

            // получаем итератор и сохраняем его в хэш-таблице
            var iteratorId = Guid.NewGuid().ToString();

            // блокируем доступ к логу на запись
            _syncFilesMutex.WaitMutex();

            var iterator = iteratorContainer.GetBufferedEvents(
                new Iterators.EventIteratorParams()
            {
                FromDate              = fromDate,
                ToDate                = toDate,
                SourceFilter          = sourceFilter,
                EventTypeFilter       = EventsToStrings(eventFilter),
                MaxEvents             = maxEvents,
                MaxEventsPerIteration = eventPerIteration
            }).GetEnumerator();

            _eventIterators.Add(iteratorId, iterator);

            // возвращаем идентификатор итератора
            return(iteratorId);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Начать последовательный доступ к событиям
        /// </summary>
        /// <param name="fromDate">Фильтр по дате-времени, начальное значение</param>
        /// <param name="toDate">Фильтр по дате-времени, конечное значение</param>
        /// <param name="sourceFilter">Фильтр по источнику событий</param>
        /// <param name="eventFilter">Фильтр по типам событий</param>
        /// <param name="maxEvents">Максимальное количество событий</param>
        /// <param name="eventPerIteration">
        /// Максимальное количество событий, возвращаемое на каждый вызов
        /// метода IEventLinkBasics.GetLog
        /// </param>
        /// <returns>Идентификатор итератора</returns>
        public String BeginGetLog(DateTime fromDate, DateTime toDate, String[] sourceFilter,
            EventType[] eventFilter, Int32 maxEvents, Int32 eventPerIteration)
        {
            // создаем контейнер для итератора
            var iteratorContainer = new Iterators.EventsIterator(GetStorageName);
            
            // получаем итератор и сохраняем его в хэш-таблице
            var iteratorId = Guid.NewGuid().ToString();

            // блокируем доступ к логу на запись
            _syncFilesMutex.WaitMutex();

            var iterator = iteratorContainer.GetBufferedEvents(
                new Iterators.EventIteratorParams()
                {
                    FromDate = fromDate,
                    ToDate = toDate,
                    SourceFilter = sourceFilter,
                    EventTypeFilter = EventsToStrings(eventFilter),
                    MaxEvents = maxEvents,
                    MaxEventsPerIteration = eventPerIteration
                }).GetEnumerator();

            _eventIterators.Add(iteratorId, iterator);

            // возвращаем идентификатор итератора
            return iteratorId;
        }