diff --git a/steamnet/steam_networking_manager.cpp b/steamnet/steam_networking_manager.cpp index 5480b81..56c8863 100644 --- a/steamnet/steam_networking_manager.cpp +++ b/steamnet/steam_networking_manager.cpp @@ -224,6 +224,27 @@ bool SteamNetworkingManager::joinHost(uint64 hostID) { } } +void SteamNetworkingManager::setMessageHandlerDependencies(boost::asio::io_context& io_context, std::map>& clientMap, std::mutex& clientMutex, std::unique_ptr& 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() { std::lock_guard lock(connectionsMutex); for (auto& pair : userMap) { diff --git a/steamnet/steam_networking_manager.h b/steamnet/steam_networking_manager.h index fd9b344..6d21b09 100644 --- a/steamnet/steam_networking_manager.h +++ b/steamnet/steam_networking_manager.h @@ -81,9 +81,19 @@ public: HSteamNetConnection getConnection() const { return g_hConnection; } ISteamNetworkingSockets* getInterface() const { return m_pInterface; } + void setMessageHandlerDependencies(boost::asio::io_context& io_context, std::map>& clientMap, std::mutex& clientMutex, std::unique_ptr& server, int& localPort); + + // Message handler + void startMessageHandler(); + void stopMessageHandler(); + // Update user info (ping, relay status) void update(); + // For callbacks + void setHostSteamID(CSteamID id) { g_hostSteamID = id; } + CSteamID getHostSteamID() const { return g_hostSteamID; } + friend class SteamFriendsCallbacks; friend class SteamMatchmakingCallbacks;