mirror of
https://github.com/Icinga/icinga2.git
synced 2025-09-07 18:08:12 +02:00
52 lines
1.3 KiB
C++
52 lines
1.3 KiB
C++
//
|
|
// Copyright (c) 2021 Kasper Laudrup (laudrup at stacktrace dot dk)
|
|
//
|
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
//
|
|
|
|
#ifndef BOOST_WINTLS_DETAIL_DECRYPTED_DATA_BUFFER_HPP
|
|
#define BOOST_WINTLS_DETAIL_DECRYPTED_DATA_BUFFER_HPP
|
|
|
|
#include <boost/wintls/detail/config.hpp>
|
|
|
|
#include <array>
|
|
#include <cassert>
|
|
#include <cstddef>
|
|
|
|
namespace boost {
|
|
namespace wintls {
|
|
namespace detail {
|
|
|
|
template <std::size_t BufferSize>
|
|
class decrypted_data_buffer {
|
|
public:
|
|
std::size_t empty() const {
|
|
return available_data_.size() == 0;
|
|
}
|
|
|
|
template <class MutableBufferSequence>
|
|
std::size_t get(const MutableBufferSequence& buffer) {
|
|
const auto size = net::buffer_copy(buffer, available_data_);
|
|
available_data_ += size;
|
|
return size;
|
|
}
|
|
|
|
template <class ConstBufferSequence>
|
|
void fill(const ConstBufferSequence& buffer) {
|
|
assert(available_data_.size() == 0);
|
|
const auto size = net::buffer_copy(net::buffer(buffer_), buffer);
|
|
available_data_ = net::buffer(buffer_.data(), size);
|
|
}
|
|
|
|
private:
|
|
net::mutable_buffer available_data_;
|
|
std::array<char, BufferSize> buffer_;
|
|
};
|
|
|
|
} // namespace detail
|
|
} // namespace wintls
|
|
} // namespace boost
|
|
|
|
#endif // BOOST_WINTLS_DETAIL_DECRYPTED_DATA_BUFFER_HPP
|