24#include <seastar/http/handlers.hh>
26#include <seastar/json/json_elements.hh>
36typedef std::function<sstring(const_req req)> request_function;
41typedef std::function<sstring(const_req req, http::reply&)> handle_function;
48typedef std::function<json::json_return_type(const_req req)> json_request_function;
56 future<json::json_return_type>(std::unique_ptr<http::request> req)> future_json_function;
59 future<std::unique_ptr<http::reply>>(std::unique_ptr<http::request> req,
60 std::unique_ptr<http::reply> rep)> future_handler_function;
72 [f_handle](std::unique_ptr<http::request> req, std::unique_ptr<http::reply> rep) {
73 rep->_content += f_handle(*req.get(), *rep.get());
74 return make_ready_future<std::unique_ptr<http::reply>>(std::move(rep));
78 function_handler(
const future_handler_function& f_handle,
const sstring& type)
79 : _f_handle(f_handle), _type(type) {
84 [_handle](std::unique_ptr<http::request> req, std::unique_ptr<http::reply> rep) {
85 return append_result(std::move(rep), _handle(*req.get()));
91 [_handle](std::unique_ptr<http::request> req, std::unique_ptr<http::reply> rep) {
92 return append_result(std::move(rep), _handle(*req.get()));
98 [_handle](std::unique_ptr<http::request> req, std::unique_ptr<http::reply> rep) {
100 return append_result(std::move(rep), std::move(res));
108 std::unique_ptr<http::request> req, std::unique_ptr<http::reply> rep)
override {
109 return _f_handle(std::move(req), std::move(rep)).then(
110 [
this](std::unique_ptr<http::reply> rep) {
112 return make_ready_future<std::unique_ptr<http::reply>>(std::move(rep));
119 std::unique_ptr<http::reply>&&
reply,
121 if (result._body_writer) {
126 return make_ready_future<std::unique_ptr<http::reply>>(std::move(reply));
130 future_handler_function _f_handle;
A representation of a possibly not-yet-computed value.
Definition: future.hh:1197
Definition: function_handlers.hh:67
future< std::unique_ptr< http::reply > > handle(const sstring &path, std::unique_ptr< http::request > req, std::unique_ptr< http::reply > rep) override
Definition: function_handlers.hh:107
Definition: handlers.hh:42
Seastar API namespace.
Definition: abort_on_ebadf.hh:26
void write_body(const sstring &content_type, noncopyable_function< future<>(output_stream< char > &&)> &&body_writer)
use an output stream to write the message body
sstring _content
Definition: reply.hh:155
Definition: json_elements.hh:316