#pragma once
#include <net_base.h>
#include <util.h>
#include <vector>
#include <string>

class CClient
{
public:
    CClient(const std::shared_ptr<spdlog::logger>& logger);
    ~CClient();

public:
    void run();

public:
    bool get_task_list();
    bool get_clients();
    bool down_task();
    bool up_task();

private:
    void handle_frame(CFrameBuffer* buf);

private:
    std::shared_ptr<spdlog::logger> logger_;
    asio::io_context io_context_;
    std::shared_ptr<CTcpClient> client_;
    std::vector<std::string> supported_;
    std::map<int, std::string> task_list_;
};