1 #ifndef UVW_HANDLE_INCLUDE_H
2 #define UVW_HANDLE_INCLUDE_H
9 #include "resource.hpp"
29 template<
typename T,
typename U>
32 static void closeCallback(uv_handle_t *handle) {
34 auto ptr = ref.shared_from_this();
40 static void allocCallback(uv_handle_t *, std::size_t suggested, uv_buf_t *buf) {
41 auto size =
static_cast<unsigned int>(suggested);
42 *buf = uv_buf_init(
new char[
size],
size);
45 template<
typename F,
typename... Args>
46 bool initialize(F &&f, Args&&... args) {
48 auto err = std::forward<F>(f)(this->parent(), this->get(), std::forward<Args>(args)...);
60 template<
typename F,
typename... Args>
61 void invoke(F &&f, Args&&... args) {
62 auto err = std::forward<F>(f)(std::forward<Args>(args)...);
91 HandleType
type() const noexcept {
115 return !(uv_is_active(this->
template get<uv_handle_t>()) == 0);
127 return !(uv_is_closing(this->
template get<uv_handle_t>()) == 0);
152 uv_ref(this->
template get<uv_handle_t>());
162 uv_unref(this->
template get<uv_handle_t>());
170 return !(uv_has_ref(this->
template get<uv_handle_t>()) == 0);
177 std::size_t
size() const noexcept {
178 return uv_handle_size(this->
template get<uv_handle_t>()->
type);
194 auto err = uv_send_buffer_size(this->
template get<uv_handle_t>(), &value);
195 return err ? 0 : value;
210 return (0 == uv_send_buffer_size(this->
template get<uv_handle_t>(), &value));
226 auto err = uv_recv_buffer_size(this->
template get<uv_handle_t>(), &value);
227 return err ? 0 : value;
242 return (0 == uv_recv_buffer_size(this->
template get<uv_handle_t>(), &value));
269 uv_fileno(this->
template get<uv_handle_t>(), &
fd);
277 #endif // UVW_HANDLE_INCLUDE_H
bool sendBufferSize(int value)
Sets the size of the send buffer used for the socket.
void close() noexcept
Request handle to be closed.
void reference() noexcept
Reference the given handle.
OSFileDescriptor fd() const
Gets the platform dependent file descriptor equivalent.
details::UVTypeWrapper< uv_os_fd_t > OSFileDescriptor
Event emitter base class.
std::size_t size() const noexcept
Returns the size of the underlying handle type.
Common class for almost all the resources available in uvw.
int sendBufferSize()
Gets the size of the send buffer used for the socket.
bool active() const noexcept
Checks if the handle is active.
details::UVTypeWrapper< uv_handle_type > HandleCategory
HandleType type() const noexcept
Gets the type of the handle.
static HandleType guessHandle(HandleCategory category) noexcept
Gets the type of the handle given a category.
bool referenced() const noexcept
Checks if the given handle referenced.
int recvBufferSize()
Gets the size of the receive buffer used for the socket.
void unreference() noexcept
Unreference the given handle.
HandleCategory category() const noexcept
Gets the category of the handle.
bool recvBufferSize(int value)
Sets the size of the receive buffer used for the socket.
bool closing() const noexcept
Checks if a handle is closing or closed.