public void Enqueue(EventRecord eventRecord) { Boolean mustFlush; lock (syncObject) { eventsList.Add(eventRecord); mustFlush = !bufferedOutput || (bufferedOutput && eventsList.Count >= maxBufferSize); } if (mustFlush) flushEvent.Set(); }
/// <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; }
/// <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()); } }
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; }
/// <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()); } }
/// <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; }