// GNU Lesser General Public License v3.0 // Copyright (c) 2025 Bart Beumer // // This program is free software; you can redistribute it and/or modify it // under the terms of the GNU Lesser General Public License v3.0 as published by // the Free Software Foundation. // #include #include using bmrshared::web::request_response; request_response::response_writer_interface::~response_writer_interface() = default; request_response::internal_request_response::internal_request_response(request_type request, callback_on_finalize cb_finalize) : m_request(std::move(request)) , m_cb_finalize(std::move(cb_finalize)) , m_response_writer() { } request_response::internal_request_response::~internal_request_response() { if (m_response_writer) { std::shared_ptr shared_writer(std::move(m_response_writer)); m_cb_finalize( [shared_writer](boost::beast::tcp_stream& stream) { shared_writer->write_response(stream); }); } } const request_response::request_type& request_response::internal_request_response::get_request() const { return m_request; } void request_response::internal_request_response::set_response_sender(std::unique_ptr response_writer) { m_response_writer = std::move(response_writer); } request_response::request_response(request_type request, callback_on_finalize cb_finalize) : m_internal(std::make_unique(std::move(request), std::move(cb_finalize))) { } request_response::~request_response() = default; const request_response::request_type& request_response::get_request() const { return m_internal->get_request(); }