diff --git a/include/Nazara/Network.hpp b/include/Nazara/Network.hpp index 35e49b04c..17bc424a3 100644 --- a/include/Nazara/Network.hpp +++ b/include/Nazara/Network.hpp @@ -50,5 +50,6 @@ #include #include #include +#include #endif // NAZARA_GLOBAL_NETWORK_HPP diff --git a/include/Nazara/Network/WebServiceAppComponent.hpp b/include/Nazara/Network/WebServiceAppComponent.hpp new file mode 100644 index 000000000..4b95e6940 --- /dev/null +++ b/include/Nazara/Network/WebServiceAppComponent.hpp @@ -0,0 +1,45 @@ +// Copyright (C) 2024 Jérôme "SirLynix" Leclercq (lynix680@gmail.com) +// This file is part of the "Nazara Engine - Network module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#pragma once + +#ifndef NAZARA_NETWORK_WEBSERVICEAPPCOMPONENT_HPP +#define NAZARA_NETWORK_WEBSERVICEAPPCOMPONENT_HPP + +#include +#include +#include +#include +#include + +namespace Nz +{ + class WebService; + + class NAZARA_NETWORK_API WebServiceAppComponent : public ApplicationComponent + { + public: + WebServiceAppComponent(ApplicationBase& app); + WebServiceAppComponent(const WebServiceAppComponent&) = delete; + WebServiceAppComponent(WebServiceAppComponent&&) = delete; + ~WebServiceAppComponent() = default; + + std::unique_ptr AllocateRequest(); + + void QueueRequest(const FunctionRef& builder); + void QueueRequest(std::unique_ptr&& request); + + void Update(Time elapsedTime) override; + + WebServiceAppComponent& operator=(const WebServiceAppComponent&) = delete; + WebServiceAppComponent& operator=(WebServiceAppComponent&&) = delete; + + private: + std::shared_ptr m_webService; + }; +} + +#include + +#endif // NAZARA_NETWORK_WEBSERVICEAPPCOMPONENT_HPP diff --git a/include/Nazara/Network/WebServiceAppComponent.inl b/include/Nazara/Network/WebServiceAppComponent.inl new file mode 100644 index 000000000..acebb3809 --- /dev/null +++ b/include/Nazara/Network/WebServiceAppComponent.inl @@ -0,0 +1,11 @@ +// Copyright (C) 2024 Jérôme "SirLynix" Leclercq (lynix680@gmail.com) +// This file is part of the "Nazara Engine - Network module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include + +namespace Nz +{ +} + +#include diff --git a/src/Nazara/Network/WebServiceAppComponent.cpp b/src/Nazara/Network/WebServiceAppComponent.cpp new file mode 100644 index 000000000..66343cab5 --- /dev/null +++ b/src/Nazara/Network/WebServiceAppComponent.cpp @@ -0,0 +1,37 @@ +// Copyright (C) 2024 Jérôme "SirLynix" Leclercq (lynix680@gmail.com) +// This file is part of the "Nazara Engine - Network module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include +#include +#include + +namespace Nz +{ + WebServiceAppComponent::WebServiceAppComponent(ApplicationBase& app) : + ApplicationComponent(app) + { + m_webService = Network::Instance()->InstantiateWebService(); + } + + std::unique_ptr WebServiceAppComponent::AllocateRequest() + { + return m_webService->AllocateRequest(); + } + + void WebServiceAppComponent::QueueRequest(const FunctionRef& builder) + { + m_webService->QueueRequest(builder); + } + + void WebServiceAppComponent::QueueRequest(std::unique_ptr&& request) + { + m_webService->QueueRequest(std::move(request)); + } + + void WebServiceAppComponent::Update(Time /*elapsedTime*/) + { + m_webService->Poll(); + } +}