tinyrpc/includes/net/tcp/tcp_client.hpp
2025-02-05 20:50:31 +08:00

33 lines
995 B
C++

#pragma once
#include "abstract_coder.hpp"
#include "client_tcp_connect.hpp"
#include "coroutine.hpp"
#include "net_address.hpp"
#include "reactor.hpp"
#include "tinypb_data.hpp"
#include <memory>
namespace tinyrpc {
class TcpClient {
public:
TcpClient(const NetAddress& peerAddr);
AbstractCoder& getCoder() {return *m_coder;}
const NetAddress& getLocalAddr() const {return m_local_addr;}
const NetAddress& getPeerAddr() const {return m_peer_addr;}
bool writeToSendBuffer(const AbstractData& data);
int sendAndRecvData(const std::string& msg_req, std::shared_ptr<AbstractData>& res);
void addCoroutine(Coroutine& cor);
bool connectToServer();
void start();
~TcpClient();
private:
int m_fd{-1};
NetAddress m_local_addr{};
NetAddress m_peer_addr{};
Reactor& m_reactor;
std::unique_ptr<ClientTcpConnection> m_connection;
AbstractCoder* m_coder{};
};
}