*: 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`.
* @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).
@ -214,7 +214,7 @@ public:
* * A `const char *` containing a valid hostname.
* * 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

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);
}
UVW_INLINE int get_name_info_req::name_info(socket_address addr, int flags) {
return name_info(std::move(addr.ip), addr.port, flags);
UVW_INLINE int get_name_info_req::name_info(const socket_address &addr, int 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) {
@ -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);
}
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);
}

View File

@ -1,10 +1,9 @@
#include <utility>
#include "config.h"
namespace uvw {
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)
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"
namespace uvw {
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) {
if(fs_poll_handle &fsPoll = *(static_cast<fs_poll_handle *>(hndl->data)); status) {

View File

@ -4,7 +4,7 @@
namespace uvw {
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)
: handle{token, std::move(ref)}, tag{FD}, file_desc{desc} {}

View File

@ -181,7 +181,7 @@ public:
uv_stdio_container_t container;
container.flags = static_cast<uv_stdio_flags>(flags);
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;
}

View File

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

View File

@ -150,7 +150,7 @@ public:
* @param opts Optional additional flags.
* @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.
@ -199,7 +199,7 @@ public:
* @param addr A valid instance of socket_address.
* @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.

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);
}
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);
}
@ -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));
}
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);
}

View File

@ -154,7 +154,7 @@ public:
* @param addr A valid instance of socket_address.
* @return Underlying return value.
*/
int connect(socket_address addr);
int connect(const socket_address &addr);
/**
* @brief Disconnects the handle.
@ -240,7 +240,7 @@ public:
* @param opts Optional additional flags.
* @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.
@ -358,7 +358,7 @@ public:
* @param len The lenght of the submitted data.
* @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.
@ -416,7 +416,7 @@ public:
* @param len The lenght of the submitted data.
* @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.
@ -456,7 +456,7 @@ public:
* @param len The lenght of the submitted data.
* @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.
@ -496,7 +496,7 @@ public:
* @param len The lenght of the submitted data.
* @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.

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));
}
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);
}
@ -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);
}
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);
}
@ -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);
}
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);
}
@ -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);
}
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);
}
@ -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);
}
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);
}
@ -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);
}
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);
}

View File

@ -4,7 +4,7 @@
namespace uvw {
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) {
static_cast<work_req *>(req->data)->func();

View File

@ -4,7 +4,7 @@
TEST(Thread, Run) {
auto loop = uvw::loop::get_default();
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) {
*has_run_ptr = true;
}