*: perf improvements

This commit is contained in:
Michele Caini 2024-10-23 09:28:51 +02:00
parent 949e46642a
commit e774913db9
13 changed files with 28 additions and 30 deletions

View File

@ -171,7 +171,7 @@ public:
* @param flags Optional flags that modify the behavior of `getnameinfo`. * @param flags Optional flags that modify the behavior of `getnameinfo`.
* @return Underlying return value. * @return Underlying return value.
*/ */
int name_info(socket_address addr, int flags = 0); int name_info(const socket_address &addr, int flags = 0);
/** /**
* @brief Sync [getnameinfo](http://linux.die.net/man/3/getnameinfo). * @brief Sync [getnameinfo](http://linux.die.net/man/3/getnameinfo).
@ -214,7 +214,7 @@ public:
* * A `const char *` containing a valid hostname. * * A `const char *` containing a valid hostname.
* * A `const char *` containing a valid service name. * * A `const char *` containing a valid service name.
*/ */
std::pair<bool, std::pair<const char *, const char *>> name_info_sync(socket_address addr, int flags = 0); std::pair<bool, std::pair<const char *, const char *>> name_info_sync(const socket_address &addr, int flags = 0);
}; };
} // namespace uvw } // namespace uvw

View File

@ -68,8 +68,8 @@ UVW_INLINE int get_name_info_req::name_info(const std::string &ip, unsigned int
return name_info(details::ip_addr(ip.data(), port), flags); return name_info(details::ip_addr(ip.data(), port), flags);
} }
UVW_INLINE int get_name_info_req::name_info(socket_address addr, int flags) { UVW_INLINE int get_name_info_req::name_info(const socket_address &addr, int flags) {
return name_info(std::move(addr.ip), addr.port, flags); return name_info(addr.ip, addr.port, flags);
} }
UVW_INLINE std::pair<bool, std::pair<const char *, const char *>> get_name_info_req::name_info_sync(const sockaddr &addr, int flags) { UVW_INLINE std::pair<bool, std::pair<const char *, const char *>> get_name_info_req::name_info_sync(const sockaddr &addr, int flags) {
@ -82,7 +82,7 @@ UVW_INLINE std::pair<bool, std::pair<const char *, const char *>> get_name_info_
return name_info_sync(details::ip_addr(ip.data(), port), flags); return name_info_sync(details::ip_addr(ip.data(), port), flags);
} }
UVW_INLINE std::pair<bool, std::pair<const char *, const char *>> get_name_info_req::name_info_sync(socket_address addr, int flags) { UVW_INLINE std::pair<bool, std::pair<const char *, const char *>> get_name_info_req::name_info_sync(const socket_address &addr, int flags) {
return name_info_sync(addr.ip, addr.port, flags); return name_info_sync(addr.ip, addr.port, flags);
} }

View File

@ -1,10 +1,9 @@
#include <utility>
#include "config.h" #include "config.h"
namespace uvw { namespace uvw {
UVW_INLINE fs_event_event::fs_event_event(const char *pathname, details::uvw_fs_event events) UVW_INLINE fs_event_event::fs_event_event(const char *pathname, details::uvw_fs_event events)
: filename{pathname}, flags{std::move(events)} {} : filename{pathname}, flags{events} {}
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters) // NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
UVW_INLINE void fs_event_handle::start_callback(uv_fs_event_t *hndl, const char *filename, int events, int status) { UVW_INLINE void fs_event_handle::start_callback(uv_fs_event_t *hndl, const char *filename, int events, int status) {

View File

@ -1,10 +1,9 @@
#include <utility>
#include "config.h" #include "config.h"
namespace uvw { namespace uvw {
UVW_INLINE fs_poll_event::fs_poll_event(file_info previous, file_info current) noexcept UVW_INLINE fs_poll_event::fs_poll_event(file_info previous, file_info current) noexcept
: prev{std::move(previous)}, curr{std::move(current)} {} : prev{previous}, curr{current} {}
UVW_INLINE void fs_poll_handle::start_callback(uv_fs_poll_t *hndl, int status, const uv_stat_t *prev, const uv_stat_t *curr) { UVW_INLINE void fs_poll_handle::start_callback(uv_fs_poll_t *hndl, int status, const uv_stat_t *prev, const uv_stat_t *curr) {
if(fs_poll_handle &fsPoll = *(static_cast<fs_poll_handle *>(hndl->data)); status) { if(fs_poll_handle &fsPoll = *(static_cast<fs_poll_handle *>(hndl->data)); status) {

View File

@ -4,7 +4,7 @@
namespace uvw { namespace uvw {
UVW_INLINE poll_event::poll_event(details::uvw_poll_event events) noexcept UVW_INLINE poll_event::poll_event(details::uvw_poll_event events) noexcept
: flags{std::move(events)} {} : flags{events} {}
UVW_INLINE poll_handle::poll_handle(loop::token token, std::shared_ptr<loop> ref, int desc) UVW_INLINE poll_handle::poll_handle(loop::token token, std::shared_ptr<loop> ref, int desc)
: handle{token, std::move(ref)}, tag{FD}, file_desc{desc} {} : handle{token, std::move(ref)}, tag{FD}, file_desc{desc} {}

View File

@ -181,7 +181,7 @@ public:
uv_stdio_container_t container; uv_stdio_container_t container;
container.flags = static_cast<uv_stdio_flags>(flags); container.flags = static_cast<uv_stdio_flags>(flags);
container.data.stream = reinterpret_cast<uv_stream_t *>(stream.raw()); container.data.stream = reinterpret_cast<uv_stream_t *>(stream.raw());
po_stream_stdio.push_back(std::move(container)); po_stream_stdio.push_back(container);
return *this; return *this;
} }

View File

@ -85,7 +85,7 @@ UVW_INLINE process_handle &process_handle::stdio(file_handle fd, stdio_flags fla
uv_stdio_container_t container; uv_stdio_container_t container;
container.flags = fgs; container.flags = fgs;
container.data.fd = actual; container.data.fd = actual;
po_fd_stdio.push_back(std::move(container)); po_fd_stdio.push_back(container);
} else { } else {
it->flags = fgs; it->flags = fgs;
it->data.fd = actual; it->data.fd = actual;

View File

@ -150,7 +150,7 @@ public:
* @param opts Optional additional flags. * @param opts Optional additional flags.
* @return Underlying return value. * @return Underlying return value.
*/ */
int bind(socket_address addr, tcp_flags opts = tcp_flags::UVW_ENUM); int bind(const socket_address &addr, tcp_flags opts = tcp_flags::UVW_ENUM);
/** /**
* @brief Gets the current address to which the handle is bound. * @brief Gets the current address to which the handle is bound.
@ -199,7 +199,7 @@ public:
* @param addr A valid instance of socket_address. * @param addr A valid instance of socket_address.
* @return Underlying return value. * @return Underlying return value.
*/ */
int connect(socket_address addr); int connect(const socket_address &addr);
/** /**
* @brief Resets a TCP connection by sending a RST packet. * @brief Resets a TCP connection by sending a RST packet.

View File

@ -37,7 +37,7 @@ UVW_INLINE int tcp_handle::bind(const std::string &ip, unsigned int port, tcp_fl
return bind(details::ip_addr(ip.data(), port), opts); return bind(details::ip_addr(ip.data(), port), opts);
} }
UVW_INLINE int tcp_handle::bind(socket_address addr, tcp_flags opts) { UVW_INLINE int tcp_handle::bind(const socket_address &addr, tcp_flags opts) {
return bind(addr.ip, addr.port, opts); return bind(addr.ip, addr.port, opts);
} }
@ -59,7 +59,7 @@ UVW_INLINE int tcp_handle::connect(const std::string &ip, unsigned int port) {
return connect(details::ip_addr(ip.data(), port)); return connect(details::ip_addr(ip.data(), port));
} }
UVW_INLINE int tcp_handle::connect(socket_address addr) { UVW_INLINE int tcp_handle::connect(const socket_address &addr) {
return connect(addr.ip, addr.port); return connect(addr.ip, addr.port);
} }

View File

@ -154,7 +154,7 @@ public:
* @param addr A valid instance of socket_address. * @param addr A valid instance of socket_address.
* @return Underlying return value. * @return Underlying return value.
*/ */
int connect(socket_address addr); int connect(const socket_address &addr);
/** /**
* @brief Disconnects the handle. * @brief Disconnects the handle.
@ -240,7 +240,7 @@ public:
* @param opts Optional additional flags. * @param opts Optional additional flags.
* @return Underlying return value. * @return Underlying return value.
*/ */
int bind(socket_address addr, udp_flags opts = udp_flags::UVW_ENUM); int bind(const socket_address &addr, udp_flags opts = udp_flags::UVW_ENUM);
/** /**
* @brief Get the local IP and port of the UDP handle. * @brief Get the local IP and port of the UDP handle.
@ -358,7 +358,7 @@ public:
* @param len The lenght of the submitted data. * @param len The lenght of the submitted data.
* @return Underlying return value. * @return Underlying return value.
*/ */
int send(socket_address addr, std::unique_ptr<char[]> data, unsigned int len); int send(const socket_address &addr, std::unique_ptr<char[]> data, unsigned int len);
/** /**
* @brief Sends data over the UDP socket. * @brief Sends data over the UDP socket.
@ -416,7 +416,7 @@ public:
* @param len The lenght of the submitted data. * @param len The lenght of the submitted data.
* @return Underlying return value. * @return Underlying return value.
*/ */
int send(socket_address addr, char *data, unsigned int len); int send(const socket_address &addr, char *data, unsigned int len);
/** /**
* @brief Sends data over the UDP socket. * @brief Sends data over the UDP socket.
@ -456,7 +456,7 @@ public:
* @param len The lenght of the submitted data. * @param len The lenght of the submitted data.
* @return Underlying return value. * @return Underlying return value.
*/ */
int try_send(socket_address addr, std::unique_ptr<char[]> data, unsigned int len); int try_send(const socket_address &addr, std::unique_ptr<char[]> data, unsigned int len);
/** /**
* @brief Sends data over the UDP socket. * @brief Sends data over the UDP socket.
@ -496,7 +496,7 @@ public:
* @param len The lenght of the submitted data. * @param len The lenght of the submitted data.
* @return Underlying return value. * @return Underlying return value.
*/ */
int try_send(socket_address addr, char *data, unsigned int len); int try_send(const socket_address &addr, char *data, unsigned int len);
/** /**
* @brief Prepares for receiving data. * @brief Prepares for receiving data.

View File

@ -67,7 +67,7 @@ UVW_INLINE int udp_handle::connect(const std::string &ip, unsigned int port) {
return connect(details::ip_addr(ip.data(), port)); return connect(details::ip_addr(ip.data(), port));
} }
UVW_INLINE int udp_handle::connect(socket_address addr) { UVW_INLINE int udp_handle::connect(const socket_address &addr) {
return connect(addr.ip, addr.port); return connect(addr.ip, addr.port);
} }
@ -90,7 +90,7 @@ UVW_INLINE int udp_handle::bind(const std::string &ip, unsigned int port, udp_fl
return bind(details::ip_addr(ip.data(), port), opts); return bind(details::ip_addr(ip.data(), port), opts);
} }
UVW_INLINE int udp_handle::bind(socket_address addr, udp_flags opts) { UVW_INLINE int udp_handle::bind(const socket_address &addr, udp_flags opts) {
return bind(addr.ip, addr.port, opts); return bind(addr.ip, addr.port, opts);
} }
@ -142,7 +142,7 @@ UVW_INLINE int udp_handle::send(const std::string &ip, unsigned int port, std::u
return send(details::ip_addr(ip.data(), port), std::move(data), len); return send(details::ip_addr(ip.data(), port), std::move(data), len);
} }
UVW_INLINE int udp_handle::send(socket_address addr, std::unique_ptr<char[]> data, unsigned int len) { UVW_INLINE int udp_handle::send(const socket_address &addr, std::unique_ptr<char[]> data, unsigned int len) {
return send(addr.ip, addr.port, std::move(data), len); return send(addr.ip, addr.port, std::move(data), len);
} }
@ -163,7 +163,7 @@ UVW_INLINE int udp_handle::send(const std::string &ip, unsigned int port, char *
return send(details::ip_addr(ip.data(), port), data, len); return send(details::ip_addr(ip.data(), port), data, len);
} }
UVW_INLINE int udp_handle::send(socket_address addr, char *data, unsigned int len) { UVW_INLINE int udp_handle::send(const socket_address &addr, char *data, unsigned int len) {
return send(addr.ip, addr.port, data, len); return send(addr.ip, addr.port, data, len);
} }
@ -176,7 +176,7 @@ UVW_INLINE int udp_handle::try_send(const std::string &ip, unsigned int port, st
return try_send(details::ip_addr(ip.data(), port), std::move(data), len); return try_send(details::ip_addr(ip.data(), port), std::move(data), len);
} }
UVW_INLINE int udp_handle::try_send(socket_address addr, std::unique_ptr<char[]> data, unsigned int len) { UVW_INLINE int udp_handle::try_send(const socket_address &addr, std::unique_ptr<char[]> data, unsigned int len) {
return try_send(addr.ip, addr.port, std::move(data), len); return try_send(addr.ip, addr.port, std::move(data), len);
} }
@ -189,7 +189,7 @@ UVW_INLINE int udp_handle::try_send(const std::string &ip, unsigned int port, ch
return try_send(details::ip_addr(ip.data(), port), data, len); return try_send(details::ip_addr(ip.data(), port), data, len);
} }
UVW_INLINE int udp_handle::try_send(socket_address addr, char *data, unsigned int len) { UVW_INLINE int udp_handle::try_send(const socket_address &addr, char *data, unsigned int len) {
return try_send(addr.ip, addr.port, data, len); return try_send(addr.ip, addr.port, data, len);
} }

View File

@ -4,7 +4,7 @@
namespace uvw { namespace uvw {
UVW_INLINE work_req::work_req(loop::token token, std::shared_ptr<loop> ref, task t) UVW_INLINE work_req::work_req(loop::token token, std::shared_ptr<loop> ref, task t)
: request{token, std::move(ref)}, func{t} {} : request{token, std::move(ref)}, func{std::move(t)} {}
UVW_INLINE void work_req::work_callback(uv_work_t *req) { UVW_INLINE void work_req::work_callback(uv_work_t *req) {
static_cast<work_req *>(req->data)->func(); static_cast<work_req *>(req->data)->func();

View File

@ -4,7 +4,7 @@
TEST(Thread, Run) { TEST(Thread, Run) {
auto loop = uvw::loop::get_default(); auto loop = uvw::loop::get_default();
auto has_run = std::make_shared<bool>(); auto has_run = std::make_shared<bool>();
auto cb = [](std::shared_ptr<void> data) { auto cb = [](const std::shared_ptr<void> &data) {
if(auto has_run_ptr = std::static_pointer_cast<bool>(data); has_run_ptr) { if(auto has_run_ptr = std::static_pointer_cast<bool>(data); has_run_ptr) {
*has_run_ptr = true; *has_run_ptr = true;
} }