/// <summary> /// Создает экземпляр класса /// </summary> /// <param name="storageFolder">Имя папки-хранилища для логов</param> /// <param name="readOnly">Открыть только для чтения</param> /// <param name="bufferedOutput">Буферизированный вывод событий в файл</param> /// <param name="flushPeriod">Периодичность сброса буфера, секунды</param> /// <param name="logFilePrefix">Префикс лог-файлов</param> public EventLink(string storageFolder, bool readOnly, bool bufferedOutput, int flushPeriod, string logFilePrefix) { if (string.IsNullOrEmpty(storageFolder)) { throw new ArgumentNullException("storageFolder"); } if (flushPeriod < 0) { throw new ArgumentOutOfRangeException("flushPeriod"); } if (string.IsNullOrEmpty(logFilePrefix)) { throw new ArgumentNullException("logFilePrefix"); } _storageFolder = storageFolder; _readOnly = readOnly; _logFilePrefix = logFilePrefix; _syncFilesMutex = MutexHelper.CreateSyncFilesMutex(storageFolder); _eventIterators = new Dictionary <string, IEnumerator <EventRecord[]> >(); if (!Directory.Exists(_storageFolder)) { Directory.CreateDirectory(_storageFolder); } if (!_readOnly) { // открываем лог OpenStorage(); // внутренний буфер событий _eventsQueue = new EventsQueue(bufferedOutput, flushPeriod, FlushBuffer); } }
internal static Mutex CreateSyncIndexMutex(string logFileName) { return(MutexHelper.CreateNamedMutex("Global\\{0}_sync_index", Path.GetFileNameWithoutExtension(logFileName))); }
internal static Mutex CreateSyncFilesMutex(string logFilePrefix) { return(MutexHelper.CreateNamedMutex("Global\\{0}_sync_files", logFilePrefix)); }