From b520ef6172b032e537b8c247275eba5eb09508c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Dziepak?= Date: Fri, 26 Jun 2015 22:37:23 +0200 Subject: [PATCH] compress: generate a std::map of options MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Paweł Dziepak --- compress.hh | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/compress.hh b/compress.hh index 2a207bab81..9b2ba05d05 100644 --- a/compress.hh +++ b/compress.hh @@ -78,6 +78,21 @@ public: throw exceptions::configuration_exception(sstring(CRC_CHECK_CHANCE) + " must be between 0.0 and 1.0."); } } + + std::map get_options() const { + if (_compressor == compressor::none) { + return std::map(); + } + std::map opts; + opts.emplace(sstring(SSTABLE_COMPRESSION), compressor_name()); + if (_chunk_length) { + opts.emplace(sstring(CHUNK_LENGTH_KB), std::to_string(_chunk_length.value() / 1024)); + } + if (_crc_check_chance) { + opts.emplace(sstring(CRC_CHECK_CHANCE), std::to_string(_crc_check_chance.value())); + } + return opts; + } private: void validate_options(const std::map& options) { // currently, there are no options specific to a particular compressor @@ -96,4 +111,16 @@ private: static const sstring namespace_prefix = "org.apache.cassandra.io.compress."; return value == class_name || value == namespace_prefix + class_name; } + sstring compressor_name() const { + switch (_compressor) { + case compressor::lz4: + return "org.apache.cassandra.io.compress.LZ4Compressor"; + case compressor::snappy: + return "org.apache.cassandra.io.compress.SnappyCompressor"; + case compressor::deflate: + return "org.apache.cassandra.io.compress.DeflateCompressor"; + default: + abort(); + } + } };