Skip to content

Commit 37ebc2e

Browse files
author
Valtteri Heikkila
committed
Changed linux_client_request_context to use shared_from_this() (for async callbacks), clarified variable names.
1 parent 7c6585e commit 37ebc2e

File tree

1 file changed

+31
-31
lines changed

1 file changed

+31
-31
lines changed

Release/src/http/client/http_linux.cpp

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -78,66 +78,66 @@ namespace web { namespace http
7878

7979
linux_connection_pool(boost::asio::io_service& io_service, utility::seconds idle_timeout) :
8080
m_io_service(io_service),
81-
m_idle_timeout(idle_timeout)
81+
m_timeout_secs(idle_timeout)
8282
{}
8383

8484
~linux_connection_pool()
8585
{
86-
std::lock_guard<std::mutex> lock(m_conns_mutex);
87-
for (auto& conn : m_conns_list)
86+
std::lock_guard<std::mutex> lock(m_connections_mutex);
87+
for (auto& connection : m_connections)
8888
{
89-
conn->m_pool_timer.cancel();
89+
connection->m_pool_timer.cancel();
9090

9191
boost::system::error_code error;
92-
conn->m_socket.shutdown(tcp::socket::shutdown_both, error);
93-
conn->m_socket.close(error);
92+
connection->m_socket.shutdown(tcp::socket::shutdown_both, error);
93+
connection->m_socket.close(error);
9494
}
9595
}
9696

97-
void put(std::shared_ptr<linux_connection> conn)
97+
void put(std::shared_ptr<linux_connection> connection)
9898
{
99-
std::lock_guard<std::mutex> lock(m_conns_mutex);
99+
std::lock_guard<std::mutex> lock(m_connections_mutex);
100100

101-
const int secs = static_cast<int>(m_idle_timeout.count());
102-
conn->m_pool_timer.expires_from_now(boost::posix_time::milliseconds(secs * 1000));
103-
conn->m_pool_timer.async_wait(boost::bind(&linux_connection::handle_pool_timer, conn, boost::asio::placeholders::error));
101+
const int secs = static_cast<int>(m_timeout_secs.count());
102+
connection->m_pool_timer.expires_from_now(boost::posix_time::milliseconds(secs * 1000));
103+
connection->m_pool_timer.async_wait(boost::bind(&linux_connection::handle_pool_timer, connection, boost::asio::placeholders::error));
104104

105-
m_conns_list.insert(conn);
105+
m_connections.insert(connection);
106106
}
107107

108108
std::shared_ptr<linux_connection> get()
109109
{
110-
std::lock_guard<std::mutex> lock(m_conns_mutex);
110+
std::lock_guard<std::mutex> lock(m_connections_mutex);
111111

112-
if (m_conns_list.empty())
112+
if (m_connections.empty())
113113
{
114114
return std::make_shared<linux_connection>(shared_from_this(), m_io_service);
115115
}
116116
else
117117
{
118-
(*m_conns_list.begin())->m_pool_timer.cancel();
119-
auto result(*m_conns_list.begin());
118+
(*m_connections.begin())->m_pool_timer.cancel();
119+
auto result(*m_connections.begin());
120120
result->m_is_reused = true;
121-
m_conns_list.erase(m_conns_list.begin());
121+
m_connections.erase(m_connections.begin());
122122

123123
return result;
124124
}
125125
}
126126

127-
void remove(std::shared_ptr<linux_connection> conn)
127+
void remove(std::shared_ptr<linux_connection> connection)
128128
{
129-
std::lock_guard<std::mutex> lock(m_conns_mutex);
130-
m_conns_list.erase(conn);
129+
std::lock_guard<std::mutex> lock(m_connections_mutex);
130+
m_connections.erase(connection);
131131
}
132132

133133
private:
134134
boost::asio::io_service& m_io_service;
135-
utility::seconds m_idle_timeout;
136-
std::unordered_set<std::shared_ptr<linux_connection> > m_conns_list;
137-
std::mutex m_conns_mutex;
135+
const utility::seconds m_timeout_secs;
136+
std::unordered_set<std::shared_ptr<linux_connection> > m_connections;
137+
std::mutex m_connections_mutex;
138138
};
139139

140-
class linux_client_request_context : public request_context
140+
class linux_client_request_context : public request_context, public std::enable_shared_from_this<linux_client_request_context>
141141
{
142142
public:
143143
static std::shared_ptr<request_context> create_request_context(std::shared_ptr<_http_client_communicator> &client, http_request &request);
@@ -185,14 +185,14 @@ namespace web { namespace http
185185
void set_timer(const int secs)
186186
{
187187
m_timeout_timer.expires_from_now(boost::posix_time::milliseconds(secs * 1000));
188-
m_timeout_timer.async_wait(boost::bind(&linux_client_request_context::handle_timeout_timer, this, boost::asio::placeholders::error));
188+
m_timeout_timer.async_wait(boost::bind(&linux_client_request_context::handle_timeout_timer, shared_from_this(), boost::asio::placeholders::error));
189189
}
190190

191191
void reset_timer(const int secs)
192192
{
193193
if (m_timeout_timer.expires_from_now(boost::posix_time::milliseconds(secs * 1000)) > 0)
194194
{
195-
m_timeout_timer.async_wait(boost::bind(&linux_client_request_context::handle_timeout_timer, this, boost::asio::placeholders::error));
195+
m_timeout_timer.async_wait(boost::bind(&linux_client_request_context::handle_timeout_timer, shared_from_this(), boost::asio::placeholders::error));
196196
}
197197
}
198198

@@ -223,7 +223,7 @@ namespace web { namespace http
223223
}
224224
}
225225

226-
linux_client_request_context(std::shared_ptr<_http_client_communicator> &client, http_request request, std::shared_ptr<linux_connection> conn);
226+
linux_client_request_context(std::shared_ptr<_http_client_communicator> &client, http_request request, std::shared_ptr<linux_connection> connection);
227227

228228
protected:
229229
virtual void cleanup()
@@ -980,23 +980,23 @@ namespace web { namespace http
980980
}
981981

982982
linux_client_request_context::linux_client_request_context(std::shared_ptr<_http_client_communicator> &client, http_request request,
983-
std::shared_ptr<linux_connection> conn)
983+
std::shared_ptr<linux_connection> connection)
984984
: request_context(client, request)
985985
, m_known_size(0)
986986
, m_needChunked(false)
987987
, m_timedout(false)
988988
, m_current_size(0)
989989
, m_timeout_timer(crossplat::threadpool::shared_instance().service())
990-
, m_conn(conn)
990+
, m_conn(connection)
991991
, m_close_socket_in_destructor(false)
992992
{}
993993

994994
std::shared_ptr<request_context> linux_client_request_context::create_request_context(
995995
std::shared_ptr<_http_client_communicator> &client, http_request &request)
996996
{
997997
auto client_cast(std::static_pointer_cast<linux_client>(client));
998-
auto conn(client_cast->m_pool->get());
999-
return std::make_shared<linux_client_request_context>(client, request, conn);
998+
auto connection(client_cast->m_pool->get());
999+
return std::make_shared<linux_client_request_context>(client, request, connection);
10001000
}
10011001

10021002
linux_client_request_context::~linux_client_request_context()

0 commit comments

Comments
 (0)