// #pragma once // #include "abstract_coder.hpp" // #include "coroutine.hpp" // #include "fd_event.hpp" // #include "reactor.hpp" // #include "tcp_buffer.hpp" // #include "tcp_client.hpp" // #include "tinypb_data.hpp" // #include // #include // namespace tinyrpc { // class TcpServer; // class TcpConnection { // public: // enum class State{ // Disconnected, // Connected // }; // enum class Type{ // Server, // Client // }; // public: // TcpConnection(int fd, Reactor& reactor, TcpServer& ser, Type type = Type::Server); // TcpConnection(int fd, Reactor& reactor, TcpClient& cli, Type type = Type::Client); // void clearClient(); // void mainLoopFun(); // State getState() {return m_state;} // bool getResPackageData(const std::string& msg_req, std::shared_ptr& pb_struct); // ~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; // TcpServer& m_server; // // TcpClient& m_server; // Type m_connectType{}; // std::unordered_map> m_respond_datas; // }; // }