From bdc6f19de7562eac08b3a6d99408fa7d24be5ef0 Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Fri, 22 Jul 2016 17:39:09 +0200 Subject: [PATCH] refinement of Handle --- src/uvw/handle.hpp | 40 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/src/uvw/handle.hpp b/src/uvw/handle.hpp index 54b32c62..b1676ad1 100644 --- a/src/uvw/handle.hpp +++ b/src/uvw/handle.hpp @@ -39,6 +39,22 @@ class Handle: public BaseHandle, public Resource ref.publish(CloseEvent{}); } + template + int setBufferSize(F &&f) { + int value = 0; + + if(0 != invoke(std::forward(f), this->template get(), &value)) { + value = 0; + } + + return 0; + } + + template + void getBufferSize(F &&f, int value) { + invoke(&std::forward(f), this->template get(), &value); + } + protected: using Resource::Resource; @@ -92,9 +108,27 @@ public: return uv_handle_size(this->template get()->type); } - // TODO uv_send_buffer_size - // TODO uv_recv_buffer_size - // TODO uv_fileno + int sendBufferSize() const { + return setBufferSize(&uv_send_buffer_size); + } + + void sendBufferSize(int value) { + getBufferSize(&uv_send_buffer_size, value); + } + + int recvBufferSize() const { + return setBufferSize(&uv_recv_buffer_size); + } + + void recvBufferSize(int value) { + getBufferSize(&uv_recv_buffer_size, value); + } + + OSFileDescriptor fileno() const { + uv_os_fd_t fd; + invoke(&uv_fileno, this->template get(), &fd); + return fd; + } };