proxy.h

main 45 lines · 1.3 KB Raw
Alex Alex Commit Client Upload Part 2 19/10/2026 00:06
1#pragma once
2
3#include "proxy_client.h"
4
5class ProxyManager {
6public:
7 ProxyManager() : m_io(), m_guard(boost::asio::make_work_guard(m_io))
8 {
9
10 }
11 void init();
12 void terminate();
13 void clear();
14 void setMaxActiveProxies(int value)
15 {
16 m_maxActiveProxies = value;
17 if (m_maxActiveProxies < 1)
18 m_maxActiveProxies = 1;
19 }
20 bool isActive();
21 void addProxy(const std::string& host, uint16_t port, int priority);
22 void removeProxy(const std::string& host, uint16_t port);
23 uint32_t addSession(uint16_t port, std::function<void(ProxyPacketPtr)> recvCallback, std::function<void(boost::system::error_code)> disconnectCallback);
24 void removeSession(uint32_t sessionId);
25 void send(uint32_t sessionId, ProxyPacketPtr packet);
26 // tools
27 std::map<std::string, uint32_t> getProxies();
28 std::map<std::string, std::string> getProxiesDebugInfo();
29 int getPing();
30
31private:
32 boost::asio::io_context m_io;
33 boost::asio::executor_work_guard<boost::asio::io_context::executor_type> m_guard;
34
35 bool m_working = false;
36 std::thread m_thread;
37
38 int m_maxActiveProxies = 2;
39
40 std::list<std::weak_ptr<Proxy>> m_proxies;
41 std::list<std::weak_ptr<Session>> m_sessions;
42};
43
44extern ProxyManager g_proxy;
45
Top