tinyrpc/includes/net/tcp/tcp_client.hpp

33 lines
995 B
C++
Raw Permalink Normal View History

2025-02-04 16:09:27 +08:00
#pragma once
#include "abstract_coder.hpp"
#include "client_tcp_connect.hpp"
2025-02-05 20:50:31 +08:00
#include "coroutine.hpp"
2025-02-04 16:09:27 +08:00
#include "net_address.hpp"
#include "reactor.hpp"
2025-02-05 20:50:31 +08:00
#include "tinypb_data.hpp"
#include <memory>
2025-02-04 16:09:27 +08:00
namespace tinyrpc {
class TcpClient {
public:
TcpClient(const NetAddress& peerAddr);
AbstractCoder& getCoder() {return *m_coder;}
2025-02-05 20:50:31 +08:00
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();
2025-02-04 16:09:27 +08:00
~TcpClient();
private:
int m_fd{-1};
NetAddress m_local_addr{};
NetAddress m_peer_addr{};
Reactor& m_reactor;
2025-02-05 20:50:31 +08:00
std::unique_ptr<ClientTcpConnection> m_connection;
2025-02-04 16:09:27 +08:00
AbstractCoder* m_coder{};
};
}