mrDarker
2025-08-16 5e802e47375cb399b91f0abdc95420d6cce0b18b
EdgeInspector_App/WebSocket/WebSocketClientPool.h
@@ -1,50 +1,50 @@
#ifndef WEBSOCKETCLIENTWITHPOOL_H
#ifndef WEBSOCKETCLIENTWITHPOOL_H
#define WEBSOCKETCLIENTWITHPOOL_H
#include "WebSocketClient.h"
#include "ThreadPool.h"
class WebSocketClientPool {
public:
    explicit WebSocketClientPool(size_t thread_count);
    ~WebSocketClientPool();
    // 初始化客户端
    void init_clients(const std::vector<std::string>& uris);
   // 退出所有客户端
   void exit_clients();
    // 使用线程池发送消息
    void post_to_all(const std::string& message);
    void post_binary_to_all(const std::vector<char>& binary_data);
   // 从池中选择一个空闲的客户端进行发送,不需要服务器响应
    bool post_to_idle_client(const std::string& message);
   bool post_binary_to_idle_client(const std::vector<char>& binary_data);
    // 从池中选择一个空闲的客户端进行发送,并需要服务器响应
   bool send_to_idle_client(const std::string& message, int timeout_ms);
   bool send_binary_to_idle_client(const std::vector<char>& binary_data, int timeout_ms);
    // 从池中选择一个空闲的客户端进行发送,并等待服务器响应
    bool send_to_idle_client_and_wait(const std::string& message, int timeout_ms);
    bool send_binary_to_idle_client_and_wait(const std::vector<char>& binary_data, int timeout_ms);
   // 从池中选择一个空闲的客户端进行发送,并等待服务器响应,如果超时则重试
   bool send_to_idle_client_with_retry(const std::string& message, int total_timeout_ms, int retry_interval_ms);
    bool send_binary_to_idle_client_with_retry(std::vector<char>&& binary_data, int total_timeout_ms, int retry_interval_ms);
    // 设置 WebSocket 客户端事件处理程序
    void set_open_handler(WebSocketClient::OpenHandler handler);
    void set_message_handler(WebSocketClient::MessageHandler handler);
    void set_close_handler(WebSocketClient::CloseHandler handler);
    void set_fail_handler(WebSocketClient::FailHandler handler);
   void set_pong_handler(WebSocketClient::PongHandler handler);
private:
    std::vector<std::shared_ptr<WebSocketClient>> m_clients;
    ThreadPool m_thread_pool;
};
//#include "WebSocketClient.h"
//#include "ThreadPool.h"
//
//class WebSocketClientPool {
//public:
//    explicit WebSocketClientPool(size_t thread_count);
//    ~WebSocketClientPool();
//
//    // 初始化客户端
//    void init_clients(const std::vector<std::string>& uris);
//
//   // 退出所有客户端
//   void exit_clients();
//
//    // 使用线程池发送消息
//    void post_to_all(const std::string& message);
//    void post_binary_to_all(const std::vector<char>& binary_data);
//
//   // 从池中选择一个空闲的客户端进行发送,不需要服务器响应
//    bool post_to_idle_client(const std::string& message);
//   bool post_binary_to_idle_client(const std::vector<char>& binary_data);
//
//    // 从池中选择一个空闲的客户端进行发送,并需要服务器响应
//   bool send_to_idle_client(const std::string& message, int timeout_ms);
//   bool send_binary_to_idle_client(const std::vector<char>& binary_data, int timeout_ms);
//
//    // 从池中选择一个空闲的客户端进行发送,并等待服务器响应
//    bool send_to_idle_client_and_wait(const std::string& message, int timeout_ms);
//    bool send_binary_to_idle_client_and_wait(const std::vector<char>& binary_data, int timeout_ms);
//
//   // 从池中选择一个空闲的客户端进行发送,并等待服务器响应,如果超时则重试
//   bool send_to_idle_client_with_retry(const std::string& message, int total_timeout_ms, int retry_interval_ms);
//    bool send_binary_to_idle_client_with_retry(std::vector<char>&& binary_data, int total_timeout_ms, int retry_interval_ms);
//
//    // 设置 WebSocket 客户端事件处理程序
//    void set_open_handler(WebSocketClient::OpenHandler handler);
//    void set_message_handler(WebSocketClient::MessageHandler handler);
//    void set_close_handler(WebSocketClient::CloseHandler handler);
//    void set_fail_handler(WebSocketClient::FailHandler handler);
//   void set_pong_handler(WebSocketClient::PongHandler handler);
//
//private:
//    std::vector<std::shared_ptr<WebSocketClient>> m_clients;
//    ThreadPool m_thread_pool;
//};
#endif // WEBSOCKETCLIENTWITHPOOL_H