tinyrpc/includes/net/tcp/tcp_connection.hpp
2025-01-16 14:41:46 +08:00

40 lines
729 B
C++

#pragma once
#include "coroutine.hpp"
#include "fd_event.hpp"
#include "reactor.hpp"
#include "tcp_buffer.hpp"
namespace tinyrpc {
class TcpConnection {
public:
enum class State{
Disconnected,
Connected
};
public:
TcpConnection(int fd, Reactor* reactor);
void clearClient();
void mainLoopFun();
~TcpConnection();
private:
void input();
void output();
void process();
private:
FdEvent *m_fdEvent;
Coroutine m_mainCoroutine;
State m_state{State::Connected};
TcpBuffer m_writeBuffer{};
TcpBuffer m_readBuffer{};
Reactor* m_reactor{};
};
}