33 lines
995 B
C++
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{};
|
|
};
|
|
|
|
} |