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_;
190 std::shared_ptr<BaseOutputTarget> output_target,
193 std::size_t num_threads = 0
195 : output_target_( output_target )
196 , block_size_( block_size )
197 , compression_level_( compression_level )
198 , num_threads_( num_threads )
201 throw std::invalid_argument(
202 "Cannot use compression level kNoCompression with a gzip block output."
224 std::ostream& out_stream_()
override
228 if( !stream_ || !stream_->good() ) {
231 stream_ = genesis::utils::make_unique<GzipBlockOStream>(
232 output_target_->ostream(), block_size_, compression_level_, num_threads_
236 assert( stream_->good() );
245 std::string target_name_()
const override
248 return "gzip-compressed " + output_target_->target_name();
254 std::string target_string_()
const override
256 return output_target_->target_name();
265 std::shared_ptr<BaseOutputTarget> output_target_;
268 std::unique_ptr<GzipBlockOStream> stream_;
271 std::size_t block_size_;
273 std::size_t num_threads_;
280 #endif // include guard