Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8295fb8

Browse files
committed
Well these test all pass...
1 parent7415d62 commit8295fb8

File tree

7 files changed

+203
-206
lines changed

7 files changed

+203
-206
lines changed

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

Lines changed: 62 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
#include<boost/asio/io_service.hpp>
1414
#include<boost/asio/strand.hpp>
1515
#include<boost/asio/ip/tcp.hpp>
16-
#include<boost/range/iterator_range.hpp>
1716
#include<boost/algorithm/string/case_conv.hpp>
1817
#include<boost/exception/all.hpp>
1918
#include<network/http/v2/client/connection/resolver_delegate.hpp>
@@ -27,79 +26,76 @@ namespace network {
2726
*/
2827
classasync_resolver_delegate :publicresolver_delegate {
2928

30-
async_resolver_delegate(const async_resolver_delegate &) =delete;
31-
async_resolver_delegate &operator = (const async_resolver_delegate &) =delete;
29+
async_resolver_delegate(const async_resolver_delegate &) =delete;
30+
async_resolver_delegate &operator = (const async_resolver_delegate &) =delete;
3231

3332
public:
3433

35-
/**
36-
* \brief Constructor.
37-
*/
38-
async_resolver_delegate(boost::asio::io_service &service,bool cache_resolved =false)
39-
: resolver_(service)
40-
, resolver_strand_(new boost::asio::io_service::strand(service))
41-
, cache_resolved_(cache_resolved) {
42-
43-
}
44-
45-
/**
46-
* \brief Destructor.
47-
*/
48-
virtual~async_resolver_delegate()noexcept {
49-
50-
}
51-
52-
/**
53-
* \brief Resolves a host asynchronously.
54-
*/
55-
56-
virtualvoidresolve(const std::string &host, std::uint16_t port, callback_fn callback) {
57-
if (cache_resolved_) {
58-
endpoint_cache::iterator it = endpoint_cache_.find(boost::to_lower_copy(host));
59-
if (it != endpoint_cache_.end()) {
60-
boost::system::error_code ec;
61-
callback(ec, it->second);
62-
return;
63-
}
64-
}
65-
66-
resolver::queryquery(host,std::to_string(port));
67-
resolver_.async_resolve(query,
34+
/**
35+
* \brief Constructor.
36+
*/
37+
async_resolver_delegate(boost::asio::io_service &service,bool cache_resolved =false)
38+
: resolver_(service)
39+
, resolver_strand_(new boost::asio::io_service::strand(service))
40+
, cache_resolved_(cache_resolved) {
41+
42+
}
43+
44+
/**
45+
* \brief Destructor.
46+
*/
47+
virtual~async_resolver_delegate()noexcept {
48+
49+
}
50+
51+
/**
52+
* \brief Resolves a host asynchronously.
53+
*/
54+
55+
virtualvoidresolve(const std::string &host, std::uint16_t port, callback_fn callback) {
56+
if (cache_resolved_) {
57+
endpoint_cache::iterator it = endpoint_cache_.find(boost::to_lower_copy(host));
58+
if (it != endpoint_cache_.end()) {
59+
boost::system::error_code ec;
60+
callback(ec, it->second);
61+
return;
62+
}
63+
}
64+
65+
66+
resolver::queryquery(host,std::to_string(port));
67+
resolver_.async_resolve(query,
6868
resolver_strand_->wrap(
69-
[&host, &callback,this](const boost::system::error_code &ec,
70-
resolver_iterator endpoint_iterator) {
71-
if (ec) {
72-
auto resolvers =std::make_pair(resolver_iterator(),resolver_iterator());
73-
callback(ec, resolvers);
74-
}
75-
else {
76-
auto resolvers =std::make_pair(endpoint_iterator,resolver_iterator());
77-
if (cache_resolved_) {
78-
endpoint_cache_.insert(std::make_pair(host, resolvers));
79-
}
80-
callback(ec, resolvers);
81-
}
82-
}));
83-
84-
}
85-
86-
/**
87-
* \brief Clears the cache of already resolved endpoints.
88-
*/
89-
voidclear_resolved_cache() {
90-
endpoint_cache().swap(endpoint_cache_);
91-
}
69+
[&host, &callback,this](const boost::system::error_code &ec,
70+
resolver_iterator endpoint_iterator) {
71+
if (ec) {
72+
callback(ec,resolver_iterator());
73+
}
74+
else {
75+
if (cache_resolved_) {
76+
endpoint_cache_.insert(std::make_pair(host, endpoint_iterator));
77+
}
78+
callback(ec, endpoint_iterator);
79+
}
80+
}));
81+
}
82+
83+
/**
84+
* \brief Clears the cache of already resolved endpoints.
85+
*/
86+
voidclear_resolved_cache() {
87+
endpoint_cache().swap(endpoint_cache_);
88+
}
9289

9390
private:
9491

95-
typedef boost::asio::io_service::strand strand;
96-
typedef std::unordered_map<std::string, resolver_iterator_range> endpoint_cache;
97-
std::promise<std::pair<boost::system::error_code, resolver_iterator_range>> promise_;
92+
typedef boost::asio::io_service::strand strand;
93+
typedef std::unordered_map<std::string, resolver_iterator> endpoint_cache;
9894

99-
resolver resolver_;
100-
std::unique_ptr<strand> resolver_strand_;
101-
bool cache_resolved_;
102-
endpoint_cache endpoint_cache_;
95+
resolver resolver_;
96+
std::unique_ptr<strand> resolver_strand_;
97+
bool cache_resolved_;
98+
endpoint_cache endpoint_cache_;
10399

104100
};
105101
}// namespace v2

‎http/src/network/http/v2/client/connection/connection_delegate.hpp‎

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
#include<functional>
1010
#include<string>
11-
#include<future>
1211
#include<boost/asio/ip/tcp.hpp>
1312
#include<boost/asio/streambuf.hpp>
1413
#include<boost/asio/buffer.hpp>
@@ -18,24 +17,27 @@ namespace network {
1817
namespacev2 {
1918
classconnection_delegate {
2019

21-
connection_delegate(const connection_delegate &) =delete;
22-
connection_delegate &operator = (const connection_delegate &) =delete;
20+
connection_delegate(const connection_delegate &) =delete;
21+
connection_delegate &operator = (const connection_delegate &) =delete;
2322

2423
public:
2524

26-
connection_delegate() =default;
25+
typedef std::function<void (const boost::system::error_code &)> connect_callback;
26+
typedef std::function<void (const boost::system::error_code &, std::size_t)> write_callback;
27+
typedef std::function<void (const boost::system::error_code &, std::size_t)> read_callback;
2728

28-
virtual~connection_delegate()noexcept { }
29+
connection_delegate()=default;
2930

30-
virtual std::future<boost::system::error_code>
31-
connect(boost::asio::ip::tcp::endpoint &endpoint,
32-
const std::string &host) =0;
31+
virtual~connection_delegate()noexcept { }
3332

34-
virtualstd::future<std::pair<boost::system::error_code, std::size_t>>
35-
write(boost::asio::streambuf &command_streambuf) =0;
33+
virtualvoidasync_connect(boost::asio::ip::tcp::endpoint &endpoint,
34+
const std::string &host, connect_callback callback) = 0;
3635

37-
virtual std::future<std::pair<boost::system::error_code, std::size_t>>
38-
read_some(const boost::asio::mutable_buffers_1 &read_buffer) =0;
36+
virtualvoidasync_write(boost::asio::streambuf &command_streambuf,
37+
write_callback callback) = 0;
38+
39+
virtualvoidasync_read_some(const boost::asio::mutable_buffers_1 &read_buffer,
40+
read_callback callback) = 0;
3941

4042
};
4143
}// namespace v2

‎http/src/network/http/v2/client/connection/normal_connection_delegate.hpp‎

Lines changed: 31 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -6,80 +6,51 @@
66
#ifndef __NETWORK_HTTP_V2_CLIENT_CONNECTION_NORMAL_CONNECTION_DELEGATE_INC__
77
#define__NETWORK_HTTP_V2_CLIENT_CONNECTION_NORMAL_CONNECTION_DELEGATE_INC__
88

9-
#include"network/http/v2/client/connection/connection_delegate.hpp"
109
#include<boost/asio/ip/tcp.hpp>
1110
#include<boost/asio/io_service.hpp>
11+
#include<network/http/v2/client/connection/connection_delegate.hpp>
1212

1313
namespacenetwork {
1414
namespacehttp {
1515
namespacev2 {
1616
classnormal_connection_delegate :publicconnection_delegate {
1717

18-
normal_connection_delegate(const normal_connection_delegate &) =delete;
19-
normal_connection_delegate &operator = (const normal_connection_delegate &) =delete;
18+
normal_connection_delegate(const normal_connection_delegate &) =delete;
19+
normal_connection_delegate &operator = (const normal_connection_delegate &) =delete;
2020

2121
public:
2222

23-
explicitnormal_connection_delegate(boost::asio::io_service &io_service)
24-
: io_service_(io_service) {
25-
26-
}
27-
28-
virtual~normal_connection_delegate()noexcept {
29-
30-
}
31-
32-
virtual std::future<boost::system::error_code>
33-
connect(boost::asio::ip::tcp::endpoint &endpoint,
34-
const std::string &host) {
35-
auto promise = std::make_shared<std::promise<boost::system::error_code>>();
36-
auto result = promise->get_future();
37-
38-
socket_.reset(newboost::asio::ip::tcp::socket(io_service_));
39-
socket_->async_connect(endpoint,
40-
[=](const boost::system::error_code &ec) {
41-
promise->set_value(ec);
42-
});
43-
// boost::system::error_code ec;
44-
// socket_->connect(endpoint, ec);
45-
// promise->set_value(ec);
46-
returnstd::move(result);
47-
}
48-
49-
virtual std::future<std::pair<boost::system::error_code, std::size_t>>
50-
write(boost::asio::streambuf &command_streambuf) {
51-
auto promise = std::make_shared<
52-
std::promise<std::pair<boost::system::error_code, std::size_t>>>();
53-
auto result = promise->get_future();
54-
55-
boost::asio::async_write(*socket_, command_streambuf,
56-
[&promise] (const boost::system::error_code &ec, std::size_t size) {
57-
promise->set_value(std::make_pair(ec, size));
58-
});
59-
returnstd::move(result);
60-
}
61-
62-
virtual std::future<std::pair<boost::system::error_code, std::size_t>>
63-
read_some(const boost::asio::mutable_buffers_1 &read_buffer) {
64-
auto promise = std::make_shared<
65-
std::promise<std::pair<boost::system::error_code, std::size_t>>>();
66-
auto result = promise->get_future();
67-
68-
// socket_->async_read_some(read_buffer,
69-
// [this] (const boost::system::error_code &ec, std::size_t bytes_read) {
70-
// read_promise_.set_value(std::make_pair(ec, bytes_read));
71-
// });
72-
boost::system::error_code ec;
73-
auto bytes_read =boost::asio::read(*socket_, read_buffer, ec);
74-
promise->set_value(std::make_pair(ec, bytes_read));
75-
returnstd::move(result);
76-
}
23+
explicitnormal_connection_delegate(boost::asio::io_service &io_service)
24+
: io_service_(io_service) {
25+
26+
}
27+
28+
virtual~normal_connection_delegate()noexcept {
29+
30+
}
31+
32+
virtualvoidasync_connect(boost::asio::ip::tcp::endpoint &endpoint,
33+
const std::string &host,
34+
connect_callback callback) {
35+
socket_.reset(newboost::asio::ip::tcp::socket(io_service_));
36+
socket_->async_connect(endpoint, callback);
37+
}
38+
39+
virtualvoidasync_write(boost::asio::streambuf &command_streambuf,
40+
write_callback callback) {
41+
boost::asio::async_write(*socket_, command_streambuf, callback);
42+
}
43+
44+
virtualvoidasync_read_some(const boost::asio::mutable_buffers_1 &read_buffer,
45+
read_callback callback) {
46+
socket_->async_read_some(read_buffer, callback);
47+
}
7748

7849
private:
7950

80-
boost::asio::io_service &io_service_;
81-
std::unique_ptr<boost::asio::ip::tcp::socket> socket_;
82-
std::promise<std::pair<boost::system::error_code, std::size_t>> read_promise_;
51+
boost::asio::io_service &io_service_;
52+
std::unique_ptr<boost::asio::ip::tcp::socket> socket_;
53+
std::promise<std::pair<boost::system::error_code, std::size_t>> read_promise_;
8354

8455
};
8556
}// namespace v2

‎http/src/network/http/v2/client/connection/resolver_delegate.hpp‎

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
#include<utility>
1313
#include<future>
1414
#include<boost/asio/ip/tcp.hpp>
15-
#include<boost/range/iterator_range.hpp>
1615

1716
namespacenetwork {
1817
namespacehttp {
@@ -23,24 +22,23 @@ namespace network {
2322
*/
2423
classresolver_delegate {
2524

26-
resolver_delegate(const resolver_delegate &) =delete;
27-
resolver_delegate &operator = (const resolver_delegate &) =delete;
25+
resolver_delegate(const resolver_delegate &) =delete;
26+
resolver_delegate &operator = (const resolver_delegate &) =delete;
2827

2928
public:
3029

31-
typedef boost::asio::ip::tcp::resolver resolver;
32-
typedef resolver::iterator resolver_iterator;
33-
typedef boost::iterator_range<resolver_iterator> resolver_iterator_range;
34-
typedef std::function<void (const boost::system::error_code&,
35-
resolver_iterator_range)> callback_fn;
30+
typedef boost::asio::ip::tcp::resolver resolver;
31+
typedef resolver::iterator resolver_iterator;
32+
typedef std::function<void (const boost::system::error_code&,
33+
resolver_iterator)> callback_fn;
3634

37-
resolver_delegate() =default;
35+
resolver_delegate() =default;
3836

39-
virtual~resolver_delegate()noexcept { }
37+
virtual~resolver_delegate()noexcept { }
4038

41-
virtualvoidresolve(const std::string &host, std::uint16_t port, callback_fn callback) = 0;
39+
virtualvoidresolve(const std::string &host, std::uint16_t port, callback_fn callback) = 0;
4240

43-
virtualvoidclear_resolved_cache() = 0;
41+
virtualvoidclear_resolved_cache() = 0;
4442

4543
};
4644
}// namespace v2

‎http/test/v2/features/client/CMakeLists.txt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
set(CPP-NETLIB_CLIENT_TESTS
77
async_resolver_test
8-
#normal_connection_test
8+
normal_connection_test
99
#client_test
1010
)
1111

‎http/test/v2/features/client/async_resolver_test.cpp‎

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
#include<iostream>
77
#include<igloo/igloo_alt.h>
88
#include<boost/asio.hpp>
9-
#include<boost/range/empty.hpp>
109
#include"network/http/v2/client/connection/async_resolver_delegate.hpp"
1110

1211
usingnamespaceigloo;
@@ -25,15 +24,15 @@ Describe(async_resolver) {
2524
// maybe execute a script
2625

2726
resolver_->resolve("127.0.0.1",80,
28-
[] (const boost::system::error_code &ec,
29-
http::async_resolver_delegate::resolver_iterator_range endpoints) {
30-
Assert::That(ec,Equals(boost::system::error_code()));
31-
for (auto endpoint : endpoints) {
32-
tcp::endpointendpoint_ =endpoint;
33-
Assert::That(endpoint_.address().to_string(),Equals("127.0.0.1"));
34-
Assert::That(endpoint_.port(),Equals(80));
35-
}
36-
});
27+
[&] (const boost::system::error_code &ec,
28+
http::async_resolver_delegate::resolver_iterator endpoint_iterator) {
29+
Assert::That(ec,Equals(boost::system::error_code()));
30+
if (endpoint_iterator !=http::async_resolver_delegate::resolver_iterator()) {
31+
tcp::endpointendpoint =*endpoint_iterator;
32+
Assert::That(endpoint.address().to_string(),Equals("127.0.0.1"));
33+
Assert::That(endpoint.port(),Equals(80));
34+
}
35+
});
3736
io_service_->run_one();
3837
}
3938

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp