添加消息处理程序依赖项设置和启动/停止功能,以增强网络消息处理能力

This commit is contained in:
Ayndpa
2025-11-18 21:46:31 +08:00
parent d1d26ad0f0
commit f2fde172e1
2 changed files with 31 additions and 0 deletions

View File

@@ -224,6 +224,27 @@ bool SteamNetworkingManager::joinHost(uint64 hostID) {
} }
} }
void SteamNetworkingManager::setMessageHandlerDependencies(boost::asio::io_context& io_context, std::map<HSteamNetConnection, std::shared_ptr<TCPClient>>& clientMap, std::mutex& clientMutex, std::unique_ptr<TCPServer>& server, int& localPort) {
io_context_ = &io_context;
clientMap_ = &clientMap;
clientMutex_ = &clientMutex;
server_ = &server;
localPort_ = &localPort;
messageHandler_ = new SteamMessageHandler(io_context, m_pInterface, connections, clientMap, clientMutex, connectionsMutex, server, g_isHost, localPort);
}
void SteamNetworkingManager::startMessageHandler() {
if (messageHandler_) {
messageHandler_->start();
}
}
void SteamNetworkingManager::stopMessageHandler() {
if (messageHandler_) {
messageHandler_->stop();
}
}
void SteamNetworkingManager::update() { void SteamNetworkingManager::update() {
std::lock_guard<std::mutex> lock(connectionsMutex); std::lock_guard<std::mutex> lock(connectionsMutex);
for (auto& pair : userMap) { for (auto& pair : userMap) {

View File

@@ -81,9 +81,19 @@ public:
HSteamNetConnection getConnection() const { return g_hConnection; } HSteamNetConnection getConnection() const { return g_hConnection; }
ISteamNetworkingSockets* getInterface() const { return m_pInterface; } ISteamNetworkingSockets* getInterface() const { return m_pInterface; }
void setMessageHandlerDependencies(boost::asio::io_context& io_context, std::map<HSteamNetConnection, std::shared_ptr<TCPClient>>& clientMap, std::mutex& clientMutex, std::unique_ptr<TCPServer>& server, int& localPort);
// Message handler
void startMessageHandler();
void stopMessageHandler();
// Update user info (ping, relay status) // Update user info (ping, relay status)
void update(); void update();
// For callbacks
void setHostSteamID(CSteamID id) { g_hostSteamID = id; }
CSteamID getHostSteamID() const { return g_hostSteamID; }
friend class SteamFriendsCallbacks; friend class SteamFriendsCallbacks;
friend class SteamMatchmakingCallbacks; friend class SteamMatchmakingCallbacks;