1 #ifndef GENESIS_UTILS_IO_GZIP_OUTPUT_TARGET_H_
2 #define GENESIS_UTILS_IO_GZIP_OUTPUT_TARGET_H_
75 std::shared_ptr<BaseOutputTarget> output_target,
78 : output_target_( output_target )
79 , compression_level_( compression_level )
99 std::ostream& out_stream_()
override
103 if( !stream_ || !stream_->good() ) {
106 stream_ = genesis::utils::make_unique<GzipOStream>(
107 output_target_->ostream(), compression_level_
111 assert( stream_->good() );
123 std::string target_name_()
const override
126 return output_target_->target_name();
128 return "gzip-compressed " + output_target_->target_name();
134 std::string target_string_()
const override
136 return output_target_->target_name();
145 std::shared_ptr<BaseOutputTarget> output_target_;
148 std::unique_ptr<GzipOStream> stream_;
191 std::shared_ptr<BaseOutputTarget> output_target,
194 std::shared_ptr<ThreadPool> thread_pool =
nullptr
196 : output_target_( output_target )
197 , block_size_( block_size )
198 , compression_level_( compression_level )
199 , thread_pool_( thread_pool )
202 throw std::invalid_argument(
203 "Cannot use compression level kNoCompression with a gzip block output."
225 std::ostream& out_stream_()
override
229 if( !stream_ || !stream_->good() ) {
232 stream_ = genesis::utils::make_unique<GzipBlockOStream>(
233 output_target_->ostream(), block_size_, compression_level_, thread_pool_
237 assert( stream_->good() );
246 std::string target_name_()
const override
249 return "gzip-compressed " + output_target_->target_name();
255 std::string target_string_()
const override
257 return output_target_->target_name();
266 std::shared_ptr<BaseOutputTarget> output_target_;
269 std::unique_ptr<GzipBlockOStream> stream_;
272 std::size_t block_size_;
274 std::shared_ptr<ThreadPool> thread_pool_;
281 #endif // include guard