57 lines
1.7 KiB
C++
57 lines
1.7 KiB
C++
// GNU Lesser General Public License v3.0
|
|
// Copyright (c) 2025 Bart Beumer <bart@4beumer.nl>
|
|
//
|
|
// 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 <bmrshared/request_response.hpp>
|
|
#include <iostream>
|
|
|
|
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<response_writer_interface> 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_interface> 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<internal_request_response>(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();
|
|
}
|
|
|