Skip to content

Commit b8eda7e

Browse files
committed
http server and route handlers use capy stream abstractions
1 parent 694d817 commit b8eda7e

2 files changed

Lines changed: 21 additions & 12 deletions

File tree

example/server/main.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,20 +65,30 @@ int server_main( int argc, char* argv[] )
6565

6666
corosio_router rr;
6767
rr.use( http::cors() );
68+
rr.use(
69+
[&]( auto& rp ) -> http::route_task
70+
{
71+
//co_return co_await rp.send("Hello, World!");
72+
auto [ec] = co_await rp.send("Hello, World!");
73+
co_return ec;
74+
});
75+
#if 1
6876
rr.use(
6977
[&]( auto& rp ) -> http::route_task
7078
{
7179
if(rp.req.method() != http::method::post)
7280
co_return http::route::next;
7381
http::json_sink js;
74-
auto [ec, n] = co_await capy::push_to(rp.req_bufs, js);
82+
auto [ec, n] = co_await capy::push_to(rp.req_body, js);
7583
if(ec.failed())
7684
co_return ec;
77-
(void)n;
85+
//(void)n;
7886
json::value jv = js.release();
7987
co_return {};
88+
8089
});
81-
rr.use( "/", http::serve_static( argv[3] ) );
90+
rr.use( "/", http::serve_static( argv[3] ) );
91+
#endif
8292

8393
http_server hsrv(
8494
ioc,

src/http_server.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
#include <boost/capy/cond.hpp>
1414
#include <boost/capy/ex/strand.hpp>
1515
#include <boost/capy/io/any_read_source.hpp>
16-
#include <boost/capy/io/any_write_sink.hpp>
16+
#include <boost/capy/io/any_buffer_sink.hpp>
17+
#include <boost/capy/io/owning.hpp>
1718
#include <boost/beast2/corosio_router.hpp>
1819
#include <boost/http/request_parser.hpp>
1920
#include <boost/http/response.hpp>
@@ -49,9 +50,8 @@ struct http_server::
4950
capy::strand<corosio::io_context::executor_type> strand;
5051
corosio::socket sock;
5152
corosio_route_params rp;
52-
http::serializer::sink<corosio::socket> ss;
5353
http::parser::source<corosio::socket> ps;
54-
http::parser::buffer_source_adapter<corosio::socket> bs;
54+
http::serializer::sink<corosio::socket> ss;
5555

5656
worker(
5757
corosio::io_context& ctx_,
@@ -61,18 +61,17 @@ struct http_server::
6161
, strand(ctx_.get_executor())
6262
, sock(ctx_)
6363
, rp(sock)
64+
, ps(rp.parser.source_for(sock))
65+
, ss(rp.serializer.sink_for(sock))
6466
{
6567
sock.open();
6668

6769
rp.parser = http::request_parser(srv->impl_->parser_cfg);
68-
ps = rp.parser.source_for(sock);
69-
bs = rp.parser.buffer_source_for(sock);
70-
rp.req_body = capy::any_read_source(ps);
71-
rp.req_bufs = capy::any_buffer_source(bs);
7270
rp.serializer = http::serializer(srv->impl_->serializer_cfg);
7371
rp.serializer.set_message(rp.res);
74-
ss = rp.serializer.sink_for( sock );
75-
rp.res_body = capy::any_write_sink(ss);
72+
73+
rp.req_body = capy::any_buffer_source(ps);
74+
rp.res_body = capy::any_buffer_sink(ss);
7675
}
7776

7877
corosio::socket& socket() override

0 commit comments

Comments
 (0)