2025-03-07 22:15:49 +01:00

175 lines
3.6 KiB
C++

#include <seafire/protocol/write.hxx>
namespace seafire::protocol
{
void
write(common::io::stream_t& s,
request_t const& r)
{
common::io::const_buffers_t payload;
to_buffers(payload, r);
s.write(payload);
}
void
write(common::io::stream_t& s,
request_t const& r,
std::error_code& ec)
{
common::io::const_buffers_t payload;
to_buffers(payload, r);
s.write(payload, ec);
}
void
write(common::io::stream_t& s,
request_t const& r,
common::io::const_buffers_t const& content)
{
common::io::const_buffers_t payload;
to_buffers(payload, r);
for (auto const& j : content) {
payload.emplace_back(j);
}
s.write(payload);
}
void
write(common::io::stream_t& s,
request_t const& r,
common::io::const_buffers_t const& content,
std::error_code& ec)
{
common::io::const_buffers_t payload;
to_buffers(payload, r);
for (auto const& j : content) {
payload.emplace_back(j);
}
s.write(payload, ec);
}
void
async_write(common::io::stream_t& s,
request_t const& r,
std::function<void(std::error_code)> handler)
{
auto bound = [handler](std::error_code const& ec, std::size_t)
{
handler(ec);
};
s.async_write(to_buffers(r), bound);
}
void
async_write(common::io::stream_t& s,
request_t const& r,
common::io::const_buffers_t const& content,
std::function<void(std::error_code)> handler)
{
auto bound = [handler](std::error_code const& ec, std::size_t)
{
handler(ec);
};
common::io::const_buffers_t payload;
to_buffers(payload, r);
for (auto const& j : content) {
payload.emplace_back(j);
}
s.async_write(payload, bound);
}
void
write(common::io::stream_t& s,
response_t const& r)
{
common::io::const_buffers_t payload;
to_buffers(payload, r);
s.write(payload);
}
void
write(common::io::stream_t& s,
response_t const& r,
std::error_code& ec)
{
common::io::const_buffers_t payload;
to_buffers(payload, r);
s.write(payload, ec);
}
void
write(common::io::stream_t& s,
response_t const& r,
common::io::const_buffers_t const& content)
{
common::io::const_buffers_t payload;
to_buffers(payload, r);
for (auto const& j : content) {
payload.emplace_back(j);
}
s.write(payload);
}
void
write(common::io::stream_t& s,
response_t const& r,
common::io::const_buffers_t const& content,
std::error_code& ec)
{
common::io::const_buffers_t payload;
to_buffers(payload, r);
for (auto const& j : content) {
payload.emplace_back(j);
}
s.write(payload, ec);
}
void
async_write(common::io::stream_t& s,
response_t const& r,
std::function<void(std::error_code)> handler)
{
auto bound = [handler](std::error_code const& ec, std::size_t)
{
handler(ec);
};
s.async_write(to_buffers(r), bound);
}
void
async_write(common::io::stream_t& s,
response_t const& r,
common::io::const_buffers_t const& content,
std::function<void(std::error_code)> handler)
{
auto bound = [handler](std::error_code const& ec, std::size_t)
{
handler(ec);
};
common::io::const_buffers_t payload;
to_buffers(payload, r);
for (auto const& j : content) {
payload.emplace_back(j);
}
s.async_write(payload, bound);
}
} // namespace seafire::protocol