Electroneum
Loading...
Searching...
No Matches
net_load_tests::open_close_test_helper Class Reference

#include <net_load_tests.h>

Public Member Functions

 open_close_test_helper (test_tcp_server &tcp_server, size_t open_request_target, size_t max_opened_connection_count)
bool handle_new_connection (const boost::uuids::uuid &connection_id, bool ignore_close_fails=false)
void close_remaining_connections ()
bool close_next_connection (bool ignore_close_fails)
size_t opened_connection_count () const

Detailed Description

Definition at line 137 of file net_load_tests.h.

Constructor & Destructor Documentation

◆ open_close_test_helper()

net_load_tests::open_close_test_helper::open_close_test_helper ( test_tcp_server & tcp_server,
size_t open_request_target,
size_t max_opened_connection_count )
inline

Definition at line 140 of file net_load_tests.h.

141 : m_tcp_server(tcp_server)
142 , m_max_opened_connection_count(max_opened_connection_count)
143 , m_opened_connection_count(0)
144 , m_next_opened_conn_idx(0)
145 , m_next_closed_conn_idx(0)
146 , m_connections(open_request_target)
147 {
148 for (auto& conn_id : m_connections)
149 conn_id = boost::uuids::nil_uuid();
150 }

Member Function Documentation

◆ close_next_connection()

bool net_load_tests::open_close_test_helper::close_next_connection ( bool ignore_close_fails)
inline

Definition at line 176 of file net_load_tests.h.

177 {
178 size_t idx = m_next_closed_conn_idx.fetch_add(1, std::memory_order_relaxed);
179 if (m_next_opened_conn_idx.load(std::memory_order_relaxed) <= idx)
180 {
181 LOG_PRINT_L0("Not enough opened connections");
182 return false;
183 }
184 if (m_connections[idx].is_nil())
185 {
186 LOG_PRINT_L0("Connection isn't opened");
187 return false;
188 }
189 if (!m_tcp_server.get_config_object().close(m_connections[idx]))
190 {
191 LOG_PRINT_L0("Close connection error: " << m_connections[idx]);
192 if (!ignore_close_fails)
193 {
194 return false;
195 }
196 }
197
198 m_connections[idx] = boost::uuids::nil_uuid();
199 m_opened_connection_count.fetch_sub(1, std::memory_order_relaxed);
200 return true;
201 }
#define LOG_PRINT_L0(x)
Definition misc_log_ex.h:99
Here is the caller graph for this function:

◆ close_remaining_connections()

void net_load_tests::open_close_test_helper::close_remaining_connections ( )
inline

Definition at line 171 of file net_load_tests.h.

172 {
173 while (close_next_connection(false));
174 }
bool close_next_connection(bool ignore_close_fails)
Here is the call graph for this function:

◆ handle_new_connection()

bool net_load_tests::open_close_test_helper::handle_new_connection ( const boost::uuids::uuid & connection_id,
bool ignore_close_fails = false )
inline

Definition at line 152 of file net_load_tests.h.

153 {
154 size_t idx = m_next_opened_conn_idx.fetch_add(1, std::memory_order_relaxed);
155 if (idx >= m_connections.size())
156 {
157 LOG_PRINT_L0("ERROR: connections overflow");
158 exit(1);
159 }
160 m_connections[idx] = connection_id;
161
162 size_t prev_connection_count = m_opened_connection_count.fetch_add(1, std::memory_order_relaxed);
163 if (m_max_opened_connection_count <= prev_connection_count)
164 {
165 return close_next_connection(ignore_close_fails);
166 }
167
168 return true;
169 }
Here is the call graph for this function:

◆ opened_connection_count()

size_t net_load_tests::open_close_test_helper::opened_connection_count ( ) const
inline

Definition at line 203 of file net_load_tests.h.

203{ return m_opened_connection_count.load(std::memory_order_relaxed); }

The documentation for this class was generated from the following file:
  • /home/abuild/rpmbuild/BUILD/electroneum-5.1.3.1-build/electroneum-5.1.3.1/tests/net_load_tests/net_load_tests.h