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);
Event emitter base class.
bool closing() const noexcept
Checks if a handle is closing or closed.
void reference() noexcept
Reference the given handle.
HandleCategory category() const noexcept
Gets the category of the handle.
int sendBufferSize()
Gets the size of the send buffer used for the socket.
bool recvBufferSize(int value)
Sets the size of the receive buffer used for the socket.
HandleType type() const noexcept
Gets the type of the handle.
bool active() const noexcept
Checks if the handle is active.
void unreference() noexcept
Unreference the given handle.
std::size_t size() const noexcept
Returns the size of the underlying handle type.
void close() noexcept
Request handle to be closed.
bool sendBufferSize(int value)
Sets the size of the send buffer used for the socket.
int recvBufferSize()
Gets the size of the receive buffer used for the socket.
bool referenced() const noexcept
Checks if the given handle referenced.
OSFileDescriptor fd() const
Gets the platform dependent file descriptor equivalent.
Common class for almost all the resources available in uvw.
details::UVTypeWrapper< uv_handle_type > HandleCategory
details::UVTypeWrapper< uv_os_fd_t > OSFileDescriptor
static HandleType guessHandle(HandleCategory category) noexcept
Gets the type of the handle given a category.