mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 12:07:45 +00:00
LibCore: Add a pure virtual parent to Core::Stream::BufferedSocket<T>
And declare a few of the stream classes in the forwarding header.
This commit is contained in:
parent
9cf1c382df
commit
8a1dfbd484
2 changed files with 20 additions and 6 deletions
|
@ -41,4 +41,10 @@ class UDPSocket;
|
||||||
|
|
||||||
enum class TimerShouldFireWhenNotVisible;
|
enum class TimerShouldFireWhenNotVisible;
|
||||||
|
|
||||||
|
namespace Stream {
|
||||||
|
class Socket;
|
||||||
|
class Stream;
|
||||||
|
class BufferedSocketBase;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -742,8 +742,16 @@ private:
|
||||||
BufferedHelper<T> m_helper;
|
BufferedHelper<T> m_helper;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class BufferedSocketBase : public Socket {
|
||||||
|
public:
|
||||||
|
virtual ErrorOr<size_t> read_line(Bytes buffer) = 0;
|
||||||
|
virtual ErrorOr<size_t> read_until(Bytes buffer, StringView const& candidate) = 0;
|
||||||
|
virtual ErrorOr<bool> can_read_line() = 0;
|
||||||
|
virtual size_t buffer_size() const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
template<SocketLike T>
|
template<SocketLike T>
|
||||||
class BufferedSocket final : public Socket {
|
class BufferedSocket final : public BufferedSocketBase {
|
||||||
friend BufferedHelper<T>;
|
friend BufferedHelper<T>;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -753,7 +761,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
BufferedSocket(BufferedSocket&& other)
|
BufferedSocket(BufferedSocket&& other)
|
||||||
: Socket(static_cast<Socket&&>(other))
|
: BufferedSocketBase(static_cast<BufferedSocketBase&&>(other))
|
||||||
, m_helper(move(other.m_helper))
|
, m_helper(move(other.m_helper))
|
||||||
{
|
{
|
||||||
setup_notifier();
|
setup_notifier();
|
||||||
|
@ -780,13 +788,13 @@ public:
|
||||||
virtual ErrorOr<void> set_blocking(bool enabled) override { return m_helper.stream().set_blocking(enabled); }
|
virtual ErrorOr<void> set_blocking(bool enabled) override { return m_helper.stream().set_blocking(enabled); }
|
||||||
virtual ErrorOr<void> set_close_on_exec(bool enabled) override { return m_helper.stream().set_close_on_exec(enabled); }
|
virtual ErrorOr<void> set_close_on_exec(bool enabled) override { return m_helper.stream().set_close_on_exec(enabled); }
|
||||||
|
|
||||||
ErrorOr<size_t> read_line(Bytes buffer) { return m_helper.read_line(move(buffer)); }
|
virtual ErrorOr<size_t> read_line(Bytes buffer) override { return m_helper.read_line(move(buffer)); }
|
||||||
ErrorOr<size_t> read_until(Bytes buffer, StringView const& candidate) { return m_helper.read_until(move(buffer), move(candidate)); }
|
virtual ErrorOr<size_t> read_until(Bytes buffer, StringView const& candidate) override { return m_helper.read_until(move(buffer), move(candidate)); }
|
||||||
template<size_t N>
|
template<size_t N>
|
||||||
ErrorOr<size_t> read_until_any_of(Bytes buffer, Array<StringView, N> candidates) { return m_helper.read_until_any_of(move(buffer), move(candidates)); }
|
ErrorOr<size_t> read_until_any_of(Bytes buffer, Array<StringView, N> candidates) { return m_helper.read_until_any_of(move(buffer), move(candidates)); }
|
||||||
ErrorOr<bool> can_read_line() { return m_helper.can_read_line(); }
|
virtual ErrorOr<bool> can_read_line() override { return m_helper.can_read_line(); }
|
||||||
|
|
||||||
size_t buffer_size() const { return m_helper.buffer_size(); }
|
virtual size_t buffer_size() const override { return m_helper.buffer_size(); }
|
||||||
|
|
||||||
virtual ~BufferedSocket() override { }
|
virtual ~BufferedSocket() override { }
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue