예제 #1
0
        /// <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);
            }
        }
예제 #2
0
 internal static Mutex CreateSyncIndexMutex(string logFileName)
 {
     return(MutexHelper.CreateNamedMutex("Global\\{0}_sync_index", Path.GetFileNameWithoutExtension(logFileName)));
 }
예제 #3
0
 internal static Mutex CreateSyncFilesMutex(string logFilePrefix)
 {
     return(MutexHelper.CreateNamedMutex("Global\\{0}_sync_files", logFilePrefix));
 }