/// <summary> /// Creates a stage writer. /// </summary> /// <param name="settings">the settings for this stage</param> /// <param name="archiveList">the archive list</param> /// <param name="rolloverLog">the rollover log</param> public CombineFiles(CombineFilesSettings settings, ArchiveList <TKey, TValue> archiveList, RolloverLog rolloverLog) : base(MessageClass.Framework) { m_settings = settings.CloneReadonly(); m_settings.Validate(); m_archiveList = archiveList; m_createNextStageFile = new SimplifiedArchiveInitializer <TKey, TValue>(settings.ArchiveSettings); m_rolloverLog = rolloverLog; m_rolloverComplete = new ManualResetEvent(false); m_syncRoot = new object(); m_rolloverTask = new ScheduledTask(ThreadingMode.DedicatedForeground, ThreadPriority.BelowNormal); m_rolloverTask.Running += OnExecute; m_rolloverTask.UnhandledException += OnException; m_rolloverTask.Start(m_settings.ExecuteTimer); }
/// <summary> /// Creates a stage writer. /// </summary> public FirstStageWriter(FirstStageWriterSettings settings, ArchiveList <TKey, TValue> list) : base(MessageClass.Framework) { if (settings is null) { throw new ArgumentNullException("settings"); } m_settings = settings.CloneReadonly(); m_settings.Validate(); m_createNextStageFile = new SimplifiedArchiveInitializer <TKey, TValue>(m_settings.FinalSettings); m_rolloverComplete = new SafeManualResetEvent(false); m_list = list; m_pendingTables1 = new List <SortedTreeTable <TKey, TValue> >(); m_pendingTables2 = new List <SortedTreeTable <TKey, TValue> >(); m_pendingTables3 = new List <SortedTreeTable <TKey, TValue> >(); m_syncRoot = new object(); m_rolloverTask = new ScheduledTask(ThreadingMode.DedicatedForeground, ThreadPriority.Normal); m_rolloverTask.Running += RolloverTask_Running; m_rolloverTask.UnhandledException += OnProcessException; }