Skip to content

Commit d9174e6

Browse files
committed
Updated method type.
1 parent 0610d08 commit d9174e6

File tree

5 files changed

+70
-27
lines changed

5 files changed

+70
-27
lines changed

http/src/http/v2/client/client.cpp

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
// http://www.boost.org/LICENSE_1_0.txt)
55

66
#include <network/http/v2/client/client.hpp>
7+
#include <network/http/v2/method.hpp>
8+
#include <network/http/v2/client/connection/async_resolver_delegate.hpp>
79

810
namespace network {
911
namespace http {
@@ -13,31 +15,45 @@ namespace network {
1315

1416
}
1517

16-
std::future<response> client::get(request req, request_options options) {
17-
return do_request("GET", req, options);
18+
std::future<response> client::get(request request_, request_options options) {
19+
return do_request(method::GET, request_, options);
1820
}
1921

20-
std::future<response> client::post(request req, request_options options) {
21-
return do_request("POST", req, options);
22+
std::future<response> client::post(request request_, request_options options) {
23+
return do_request(method::POST, request_, options);
2224
}
2325

24-
std::future<response> client::put(request req, request_options options) {
25-
return do_request("PUT", req, options);
26+
std::future<response> client::put(request request_, request_options options) {
27+
return do_request(method::PUT, request_, options);
2628
}
2729

28-
std::future<response> client::delete_(request req, request_options options) {
29-
return do_request("DELETE", req, options);
30+
std::future<response> client::delete_(request request_, request_options options) {
31+
return do_request(method::DELETE, request_, options);
3032
}
3133

32-
std::future<response> client::head(request req, request_options options) {
33-
return do_request("HEAD", req, options);
34+
std::future<response> client::head(request request_, request_options options) {
35+
return do_request(method::HEAD, request_, options);
3436
}
3537

36-
std::future<response> client::options(request req, request_options options) {
37-
return do_request("OPTIONS", req, options);
38+
std::future<response> client::options(request request_, request_options options) {
39+
return do_request(method::OPTIONS, request_, options);
3840
}
3941

40-
std::future<response> client::do_request(string_type method, request req, request_options options) {
42+
std::future<response> client::do_request(method method_, request request_, request_options options) {
43+
request_.set_method(method_);
44+
45+
boost::asio::io_service io_service;
46+
async_resolver_delegate resolver(io_service, async_resolver_delegate::cache_resolved());
47+
resolver.resolve(request_.host(), request_.port(),
48+
[=] (const boost::system::error_code &ec, boost::iterator_range<async_resolver_delegate::resolver_iterator> resolvers) {
49+
if (ec) {
50+
return;
51+
}
52+
53+
// make TCP connection
54+
});
55+
io_service.run();
56+
4157
return std::future<response>();
4258
}
4359
} // namespace v2

http/src/network/http/v2/client/client.hpp

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,27 +21,25 @@ namespace network {
2121

2222
typedef request::string_type string_type;
2323

24-
enum class method { GET, PUT, POST, DELETE, HEAD, OPTIONS, };
25-
2624
explicit client(client_options options = client_options());
2725
client(client const &) = delete;
2826
client(client &&) = delete;
2927

30-
std::future<response> get(request req, request_options options = request_options());
28+
std::future<response> get(request request_, request_options options = request_options());
3129

32-
std::future<response> post(request req, request_options options = request_options());
30+
std::future<response> post(request request_, request_options options = request_options());
3331

34-
std::future<response> put(request req, request_options options = request_options());
32+
std::future<response> put(request request_, request_options options = request_options());
3533

36-
std::future<response> delete_(request req, request_options options = request_options());
34+
std::future<response> delete_(request request_, request_options options = request_options());
3735

38-
std::future<response> head(request req, request_options options = request_options());
36+
std::future<response> head(request request_, request_options options = request_options());
3937

40-
std::future<response> options(request req, request_options options = request_options());
38+
std::future<response> options(request request_, request_options options = request_options());
4139

4240
private:
4341

44-
std::future<response> do_request(string_type method, request req, request_options options);
42+
std::future<response> do_request(method method_, request request_, request_options options);
4543

4644
client_options options_;
4745

http/src/network/http/v2/client/connection/async_resolver_delegate.hpp

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,35 @@
2121
namespace network {
2222
namespace http {
2323
namespace v2 {
24+
/*!
25+
* \class async_resolver_delegate network::http::v2::async_resolver_delegate <network/http/v2/client/connection/async_resolver_delegate.hpp>
26+
* \brief Resolves and maintains a cache of hosts.
27+
*/
2428
class async_resolver_delegate : public resolver_delegate {
2529

2630
async_resolver_delegate(const async_resolver_delegate &) = delete;
2731
async_resolver_delegate &operator = (const async_resolver_delegate &) = delete;
2832

2933
public:
3034

31-
/**
35+
struct cache_resolved { };
36+
37+
/*!
3238
* \brief Constructor.
3339
*/
34-
async_resolver_delegate(boost::asio::io_service &service, bool cache_resolved)
40+
explicit async_resolver_delegate(boost::asio::io_service &service)
3541
: resolver_(service)
36-
, cache_resolved_(cache_resolved_)
42+
, cache_resolved_(false)
43+
, resolver_strand_(new boost::asio::io_service::strand(service)) {
44+
45+
}
46+
47+
/*!
48+
* \brief Constructor.
49+
*/
50+
async_resolver_delegate(boost::asio::io_service &service, cache_resolved)
51+
: resolver_(service)
52+
, cache_resolved_(true)
3753
, resolver_strand_(new boost::asio::io_service::strand(service)) {
3854

3955
}
@@ -42,7 +58,7 @@ namespace network {
4258

4359
}
4460

45-
/**
61+
/*!
4662
* \brief Resolves a host asynchronously.
4763
*/
4864
virtual void resolve(const std::string &host, std::uint16_t port, on_resolved_fn on_resolved) {
@@ -74,6 +90,9 @@ namespace network {
7490
}));
7591
}
7692

93+
/*!
94+
* \brief Clears the cache of already resolved endpoints.
95+
*/
7796
void clear_resolved_cache() {
7897
endpoint_cache_.clear();
7998
}

http/src/network/http/v2/client/request.hpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,16 @@ namespace network {
121121
destination_ = std::move(destination);
122122
}
123123

124+
string_type host() const {
125+
assert(destination_.host());
126+
return string_type(std::begin(*destination_.host()), std::end(*destination_.host()));
127+
}
128+
129+
std::uint16_t port() const {
130+
assert(destination_.port());
131+
return *destination_.port<std::uint16_t>();
132+
}
133+
124134
void set_body(std::shared_ptr<byte_source> byte_source) {
125135
byte_source_ = byte_source;
126136
}

http/test/v2/client/async_resolver_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ TEST(async_resolver_test, resolve_localhost) {
1414
// server must be running on 127.0.0.1:80
1515

1616
boost::asio::io_service io_service;
17-
http::async_resolver_delegate resolver(io_service, false);
17+
http::async_resolver_delegate resolver(io_service);
1818
resolver.resolve("127.0.0.1", 80,
1919
[] (const boost::system::error_code &ec,
2020
const boost::iterator_range<http::async_resolver_delegate::resolver_iterator> &endpoints) {

0 commit comments

Comments
 (0)