/// <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 <see cref="WriteProcessor{TKey,TValue}"/>. /// </summary> /// <param name="list">the master list of archive files</param> /// <param name="settings">the settings</param> /// <param name="rolloverLog">the rollover log value</param> public WriteProcessor(ArchiveList <TKey, TValue> list, WriteProcessorSettings settings, RolloverLog rolloverLog) : base(MessageClass.Framework) { m_settings = settings.CloneReadonly(); m_settings.Validate(); m_stagingRollovers = new List <CombineFiles <TKey, TValue> >(); m_firstStageWriter = new FirstStageWriter <TKey, TValue>(settings.FirstStageWriter, list); m_isMemoryOnly = false; m_prebuffer = new PrebufferWriter <TKey, TValue>(settings.PrebufferWriter, m_firstStageWriter.AppendData); m_transactionTracker = new TransactionTracker <TKey, TValue>(m_prebuffer, m_firstStageWriter); foreach (CombineFilesSettings rollover in settings.StagingRollovers) { m_stagingRollovers.Add(new CombineFiles <TKey, TValue>(rollover, list, rolloverLog)); } }