/* * Copyright (C) 2019 ScyllaDB */ /* * This file is part of Scylla. * * Scylla is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Scylla is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Scylla. If not, see . */ #pragma once #include #include #include "seastarx.hh" namespace cdc { enum class delta_mode { off, keys, full, }; class options final { bool _enabled = false; bool _preimage = false; bool _postimage = false; delta_mode _delta_mode = delta_mode::full; int _ttl = 86400; // 24h in seconds public: options() = default; options(const std::map& map); std::map to_map() const; sstring to_sstring() const; bool enabled() const { return _enabled; } bool preimage() const { return _preimage; } bool postimage() const { return _postimage; } delta_mode get_delta_mode() const { return _delta_mode; } int ttl() const { return _ttl; } void enabled(bool b) { _enabled = b; } void preimage(bool b) { _preimage = b; } void postimage(bool b) { _postimage = b; } void ttl(int v) { _ttl = v; } bool operator==(const options& o) const; bool operator!=(const options& o) const; }; } // namespace cdc