/* * Copyright (C) 2017-present ScyllaDB */ /* * SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0 */ #pragma once #include #include class limiting_data_source_impl : public seastar::data_source_impl { seastar::data_source _src; size_t _limit; seastar::temporary_buffer _buf; seastar::future> do_get(); public: limiting_data_source_impl(seastar::data_source&& src, size_t limit); limiting_data_source_impl(limiting_data_source_impl&&) noexcept = default; limiting_data_source_impl& operator=(limiting_data_source_impl&&) noexcept = default; seastar::future> get() override; seastar::future> skip(uint64_t n) override; }; /// \brief Creates an data_source from another data_source but returns its data in chunks not bigger than a given limit /// /// \param src Source data_source from which data will be taken /// \return resulting data_source that returns data in chunks not bigger than a given limit seastar::data_source make_limiting_data_source(seastar::data_source&& src, size_t limit);