mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 15:07:45 +00:00
LibCore+Userland: Convert TCPServer to use the Serenity Stream API
This is intended as a real-usecase test of the Serenity Stream API, and seemed like a good candidate due to its low amount of users.
This commit is contained in:
parent
2341b0159a
commit
dfdb52efa7
11 changed files with 263 additions and 124 deletions
|
@ -10,38 +10,35 @@
|
|||
#include <AK/StringView.h>
|
||||
#include <AK/Types.h>
|
||||
#include <LibCore/Notifier.h>
|
||||
#include <LibCore/TCPSocket.h>
|
||||
#include <LibCore/Stream.h>
|
||||
|
||||
#include "Command.h"
|
||||
#include "Parser.h"
|
||||
|
||||
class Client : public RefCounted<Client> {
|
||||
public:
|
||||
static NonnullRefPtr<Client> create(int id, RefPtr<Core::TCPSocket> socket, int ptm_fd)
|
||||
{
|
||||
return adopt_ref(*new Client(id, move(socket), ptm_fd));
|
||||
}
|
||||
static ErrorOr<NonnullRefPtr<Client>> create(int id, Core::Stream::TCPSocket socket, int ptm_fd);
|
||||
|
||||
Function<void()> on_exit;
|
||||
|
||||
protected:
|
||||
Client(int id, RefPtr<Core::TCPSocket> socket, int ptm_fd);
|
||||
private:
|
||||
Client(int id, Core::Stream::TCPSocket socket, int ptm_fd);
|
||||
|
||||
ErrorOr<void> drain_socket();
|
||||
ErrorOr<void> drain_pty();
|
||||
ErrorOr<void> handle_command(Command const& command);
|
||||
ErrorOr<void> send_data(StringView str);
|
||||
ErrorOr<void> send_command(Command command);
|
||||
ErrorOr<void> send_commands(Vector<Command> commands);
|
||||
|
||||
void drain_socket();
|
||||
void drain_pty();
|
||||
void handle_data(StringView);
|
||||
void handle_command(const Command& command);
|
||||
void handle_error();
|
||||
void send_data(StringView str);
|
||||
void send_command(Command command);
|
||||
void send_commands(Vector<Command> commands);
|
||||
void quit();
|
||||
|
||||
private:
|
||||
// client id
|
||||
int m_id { 0 };
|
||||
// client resources
|
||||
RefPtr<Core::TCPSocket> m_socket;
|
||||
Core::Stream::TCPSocket m_socket;
|
||||
Parser m_parser;
|
||||
// pty resources
|
||||
int m_ptm_fd { -1 };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue