#if !defined(_CRT_SECURE_NO_WARNINGS) #define _CRT_SECURE_NO_WARNINGS #endif #include "network_manager.h" #include "core.h" #include #include namespace discord { class NetworkEvents final { public: static void OnMessage(void* callbackData, DiscordNetworkPeerId peerId, DiscordNetworkChannelId channelId, uint8_t* data, uint32_t dataLength) { auto* core = reinterpret_cast(callbackData); if (!core) { return; } auto& module = core->NetworkManager(); module.OnMessage(peerId, channelId, data, dataLength); } static void OnRouteUpdate(void* callbackData, char const* routeData) { auto* core = reinterpret_cast(callbackData); if (!core) { return; } auto& module = core->NetworkManager(); module.OnRouteUpdate(static_cast(routeData)); } }; IDiscordNetworkEvents NetworkManager::events_{ &NetworkEvents::OnMessage, &NetworkEvents::OnRouteUpdate, }; void NetworkManager::GetPeerId(NetworkPeerId* peerId) { if (!peerId) { return; } internal_->get_peer_id(internal_, reinterpret_cast(peerId)); } Result NetworkManager::Flush() { auto result = internal_->flush(internal_); return static_cast(result); } Result NetworkManager::OpenPeer(NetworkPeerId peerId, char const* routeData) { auto result = internal_->open_peer(internal_, peerId, const_cast(routeData)); return static_cast(result); } Result NetworkManager::UpdatePeer(NetworkPeerId peerId, char const* routeData) { auto result = internal_->update_peer(internal_, peerId, const_cast(routeData)); return static_cast(result); } Result NetworkManager::ClosePeer(NetworkPeerId peerId) { auto result = internal_->close_peer(internal_, peerId); return static_cast(result); } Result NetworkManager::OpenChannel(NetworkPeerId peerId, NetworkChannelId channelId, bool reliable) { auto result = internal_->open_channel(internal_, peerId, channelId, (reliable ? 1 : 0)); return static_cast(result); } Result NetworkManager::CloseChannel(NetworkPeerId peerId, NetworkChannelId channelId) { auto result = internal_->close_channel(internal_, peerId, channelId); return static_cast(result); } Result NetworkManager::SendMessage(NetworkPeerId peerId, NetworkChannelId channelId, std::uint8_t* data, std::uint32_t dataLength) { auto result = internal_->send_message( internal_, peerId, channelId, reinterpret_cast(data), dataLength); return static_cast(result); } } // namespace discord