예제 #1
0
        public void Enqueue(EventRecord eventRecord)
        {
            Boolean mustFlush;

            lock (syncObject)
            {
                eventsList.Add(eventRecord);

                mustFlush = !bufferedOutput || (bufferedOutput && eventsList.Count >= maxBufferSize);
            }

            if (mustFlush)
                flushEvent.Set();
        }
예제 #2
0
        /// <summary>
        /// Инициализация элементов управления данными записи
        /// </summary>
        /// <param name="eventRecord">Ссылка на интерфейс записи</param>
        private void InitializeControls(EventRecord eventRecord)
        {
            // проверяем валидность интерфейса
            if (eventRecord == null)
                throw new ArgumentNullException("eventRecord");

            // дата и время
            lblDateTime.Text = String.Format("Дата и время: {0}", 
                eventRecord.Timestamp.ToString("dd MMM yyyy  HH:mm:ss"));
            // источник события
            lblSource.Text = String.Format("Приложение: {0}", eventRecord.Source);
            // тип события
            lblEventType.Text = String.Format("Тип: {0}", 
                EventTypeConvertor.ConvertFrom(eventRecord.EventType));
            // текст события
            tbText.Lines = eventRecord.Text.ToArray();
            tbText.SelectionStart = 0;
        }
예제 #3
0
        /// <summary>
        /// Запись данных события
        /// </summary>
        /// <param name="record">Запись кассового лога</param>
        /// <param name="textWriter">Объект для записи данных</param>
        internal static void Save(EventRecord record, TextWriter textWriter)
        {
            // каждую строку текста события записываем в отдельную позицию лога
            // многострочный текст определяется одним идентификатором
            foreach (var line in record.Text)
            {
                var logLine = new StringBuilder();

                // идентификатор
                logLine.Append(record.Id.Replace(Dash, string.Empty));
                // табуляция
                logLine.Append(Tab);
                // дата
                logLine.Append(record.Timestamp.ToString("dd.MM.yyyy"));
                // табуляция
                logLine.Append(Tab);
                // время
                logLine.Append(record.Timestamp.ToString("HH.mm.ss"));
                // табуляция
                logLine.Append(Tab);
                // источник события
                // выравниваем по левому краю до 15 символов
                logLine.Append(record.Source.PadRight(15));
                // табуляция
                logLine.Append(Tab);
                // тип события
                logLine.Append(EventTypeConvertor.ConvertFrom(record.EventType).PadRight(15));
                // табуляция
                logLine.Append(Tab);
                // строка текста события
                logLine.Append(line);

                // запись строки в лог
                textWriter.WriteLine(logLine.ToString());
            }
        }
예제 #4
0
        private Int32 InsertEvents(EventRecord[] eventRecords, Int32 prevEventsCount)
        {
            // конвертируем события в элементы списка
            var lviBuf = new ListViewItem[eventRecords.Length];

            for (Int32 i = 0; i < eventRecords.Length; i++)
            {
                lviBuf[i] = new ListViewItem();
                lviBuf[i].Text = eventRecords[i].Timestamp.ToString("dd MMM yyyy  HH:mm:ss");
                lviBuf[i].ImageIndex = (Int32)eventRecords[i].EventType - 1;
                lviBuf[i].SubItems.Add(eventRecords[i].Source);
                lviBuf[i].SubItems.Add(EventTypeConvertor.ConvertFrom(eventRecords[i].EventType));
                lviBuf[i].SubItems.Add(eventRecords[i].Text[0]);
                lviBuf[i].Tag = eventRecords[i];
            }

            prevEventsCount += eventRecords.Length;

            _guiSyncContext.Send((state) =>
                {
                    
                    _lv.Items.AddRange(lviBuf);

                    if (_notifyOnReloadProgress)
                        _sourceConnector.ReloadProgress(prevEventsCount);

                }, null);

            return prevEventsCount;
        }
예제 #5
0
        /// <summary>
        /// Запись данных события
        /// </summary>
        /// <param name="record">Запись кассового лога</param>
        /// <param name="textWriter">Объект для записи данных</param>
        internal static void Save(EventRecord record, TextWriter textWriter)
        {
            // каждую строку текста события записываем в отдельную позицию лога
            // многострочный текст определяется одним идентификатором
            foreach (var line in record.Text)
            {
                var logLine = new StringBuilder();

                // идентификатор
                logLine.Append(record.Id.Replace(Dash, String.Empty));
                // табуляция
                logLine.Append(Tab);
                // дата
                logLine.Append(record.Timestamp.ToString("dd.MM.yyyy"));
                // табуляция
                logLine.Append(Tab);
                // время
                logLine.Append(record.Timestamp.ToString("HH.mm.ss"));
                // табуляция
                logLine.Append(Tab);
                // источник события
                // выравниваем по левому краю до 15 символов
                logLine.Append(record.Source.PadRight(15));
                // табуляция
                logLine.Append(Tab);
                // тип события
                logLine.Append(EventTypeConvertor.ConvertFrom(record.EventType).PadRight(15));
                // табуляция
                logLine.Append(Tab);
                // строка текста события
                logLine.Append(line);

                // запись строки в лог
                textWriter.WriteLine(logLine.ToString());
            }
        }
예제 #6
0
        /// <summary>
        /// Создает событие из записи лога
        /// </summary>
        /// <param name="storageEntry">Запись лога</param>
        /// <returns>Новое событие</returns>
        internal static EventRecord CreateFromStorageEntry(String[] storageEntry)
        {
            // создаем запись
            EventRecord record = new EventRecord(
                storageEntry[0],
                TimestampFromStorage(storageEntry[1], storageEntry[2]),
                storageEntry[3],
                EventTypeConvertor.ConvertTo(storageEntry[4]),
                new String[] { storageEntry[5] });

            // возвращаем ее
            return record;
        }