52 explicit
Shared(const std::
size_t& size);
59 Shared(const
char* data, const std::
size_t& length);
83 Shared(const std::span<const Byte>& data);
101 virtual ~
Shared() noexcept override = default;
121 Shared& operator<<(const Status& status);
139 Shared& operator<<(const std::
string& data);
164 template <typename NumericType, typename = std::enable_if_t<std::is_arithmetic_v<std::decay_t<NumericType>>>>
165 Shared& operator<<(const NumericType& value) {
166 std::unique_lock lock(m_data_mutex);
167 Simple::operator<<(value);
187 size_t Capacity() const noexcept override;
193 void Clear() noexcept override;
199 Buffer::Data Data() const noexcept override;
205 void Discard(const std::
size_t& length, const
Read::Position& mode) noexcept override;
211 bool End() const noexcept override;
217 bool Empty() const noexcept override;
243 Read::Status ExtractInto(const
size_t& length,
Shared& output) noexcept;
249 bool HasEnoughData(const std::
size_t& length) const override;
255 std::
string HexData(const std::
size_t& column_size = 16) const override;
261 bool IsEoF() const noexcept override;
269 bool IsReadable() const noexcept;
277 bool IsWritable() const noexcept;
295 std::
size_t Position() const noexcept override;
314 void Reserve(const std::
size_t& size) override;
320 void Seek(const std::ptrdiff_t& position, const
Read::Position& mode) const override;
326 std::
size_t Size() const noexcept override;
331 enum Status Status() const noexcept;
385 mutable std::shared_mutex m_data_mutex;
386 std::atomic<enum Status> m_status;
402 Read::Status Wait(const std::
size_t length) const noexcept;