#pragma once #include #include #include #include #include namespace NYT { //////////////////////////////////////////////////////////////////////////////// DEFINE_ENUM(EStockpileStrategy, ((FixedBreaks) (0)) ((FlooredLoad) (1)) ((ProgressiveBackoff) (2)) ); //////////////////////////////////////////////////////////////////////////////// struct TStockpileOptions { static constexpr i64 DefaultBufferSize = 4_GBs; i64 BufferSize = DefaultBufferSize; static constexpr int DefaultThreadCount = 4; int ThreadCount = DefaultThreadCount; static constexpr EStockpileStrategy DefaultStrategy = EStockpileStrategy::FixedBreaks; EStockpileStrategy Strategy = DefaultStrategy; static constexpr TDuration DefaultPeriod = TDuration::MilliSeconds(10); TDuration Period = DefaultPeriod; }; //////////////////////////////////////////////////////////////////////////////// void RunStockpileThread(TStockpileOptions options, std::atomic* shouldProceed); void RunDetachedStockpileThreads(TStockpileOptions options); //////////////////////////////////////////////////////////////////////////////// } // namespace NYT