From 54684f7cf08d553bfceac90b20cc52644a3b7a73 Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Thu, 1 Dec 2016 13:22:53 +0100 Subject: [PATCH] fixed --- src/uvw/stream.hpp | 34 ++++++++++------------------------ src/uvw/udp.hpp | 17 +++++------------ test/uvw/resource.cpp | 3 +++ 3 files changed, 18 insertions(+), 36 deletions(-) diff --git a/src/uvw/stream.hpp b/src/uvw/stream.hpp index 19d0981a..2bb6d9fd 100644 --- a/src/uvw/stream.hpp +++ b/src/uvw/stream.hpp @@ -251,16 +251,11 @@ public: * @param len The lenght of the submitted data. */ void write(std::unique_ptr data, std::size_t len) { - constexpr std::size_t N = 1; - auto write = this->loop().template resource( std::unique_ptr{ - new uv_buf_t[N]{ uv_buf_init(data.release(), len) }, - [](uv_buf_t *bufs) { - std::for_each(bufs, bufs+N, [](uv_buf_t &buf){ delete[] buf.base; }); - delete[] bufs; - } - }, N); + new uv_buf_t[1]{ uv_buf_init(data.release(), len) }, + [](uv_buf_t *bufs) { delete[] bufs->base; delete[] bufs; } + }, 1); auto listener = [ptr = this->shared_from_this()](const auto &event, details::WriteReq &) { ptr->publish(event); @@ -284,13 +279,11 @@ public: * @param len The lenght of the submitted data. */ void write(char *data, std::size_t len) { - constexpr std::size_t N = 1; - auto write = this->loop().template resource( std::unique_ptr{ - new uv_buf_t[N]{ uv_buf_init(data, len) }, + new uv_buf_t[1]{ uv_buf_init(data, len) }, [](uv_buf_t *bufs) { delete[] bufs; } - }, N); + }, 1); auto listener = [ptr = this->shared_from_this()](const auto &event, details::WriteReq &) { ptr->publish(event); @@ -322,16 +315,11 @@ public: */ template void write(S &send, std::unique_ptr data, std::size_t len) { - constexpr std::size_t N = 1; - auto write = this->loop().template resource( std::unique_ptr{ - new uv_buf_t[N]{ uv_buf_init(data.release(), len) }, - [](uv_buf_t *bufs) { - std::for_each(bufs, bufs+N, [](uv_buf_t &buf){ delete[] buf.base; }); - delete[] bufs; - } - }, N); + new uv_buf_t[1]{ uv_buf_init(data.release(), len) }, + [](uv_buf_t *bufs) { delete[] bufs->base; delete[] bufs; } + }, 1); auto listener = [ptr = this->shared_from_this()](const auto &event, details::WriteReq &) { ptr->publish(event); @@ -363,13 +351,11 @@ public: */ template void write(S &send, char *data, std::size_t len) { - constexpr std::size_t N = 1; - auto write = this->loop().template resource( std::unique_ptr{ - new uv_buf_t[N]{ uv_buf_init(data, len) }, + new uv_buf_t[1]{ uv_buf_init(data, len) }, [](uv_buf_t *bufs) { delete[] bufs; } - }, N); + }, 1); auto listener = [ptr = this->shared_from_this()](const auto &event, details::WriteReq &) { ptr->publish(event); diff --git a/src/uvw/udp.hpp b/src/uvw/udp.hpp index e71c88ad..87d3cc4b 100644 --- a/src/uvw/udp.hpp +++ b/src/uvw/udp.hpp @@ -297,19 +297,14 @@ public: */ template void send(std::string ip, unsigned int port, std::unique_ptr data, std::size_t len) { - constexpr std::size_t N = 1; - typename details::IpTraits::Type addr; details::IpTraits::addrFunc(ip.data(), port, &addr); auto send = loop().resource( std::unique_ptr{ - new uv_buf_t[N]{ uv_buf_init(data.release(), len) }, - [](uv_buf_t *bufs) { - std::for_each(bufs, bufs+N, [](uv_buf_t &buf){ delete[] buf.base; }); - delete[] bufs; - } - }, N); + new uv_buf_t[1]{ uv_buf_init(data.release(), len) }, + [](uv_buf_t *bufs) { delete[] bufs->base; delete[] bufs; } + }, 1); auto listener = [ptr = shared_from_this()](const auto &event, details::SendReq &) { ptr->publish(event); @@ -340,16 +335,14 @@ public: */ template void send(std::string ip, unsigned int port, char *data, std::size_t len) { - constexpr std::size_t N = 1; - typename details::IpTraits::Type addr; details::IpTraits::addrFunc(ip.data(), port, &addr); auto send = loop().resource( std::unique_ptr{ - new uv_buf_t[N]{ uv_buf_init(data, len) }, + new uv_buf_t[1]{ uv_buf_init(data, len) }, [](uv_buf_t *bufs) { delete[] bufs; } - }, N); + }, 1); auto listener = [ptr = shared_from_this()](const auto &event, details::SendReq &) { ptr->publish(event); diff --git a/test/uvw/resource.cpp b/test/uvw/resource.cpp index 8878f4bb..1b366156 100644 --- a/test/uvw/resource.cpp +++ b/test/uvw/resource.cpp @@ -23,4 +23,7 @@ TEST(Resource, Basics) { ASSERT_NO_THROW(resource->data(data)); ASSERT_EQ(*std::static_pointer_cast(resource->data()), 42); + + resource->close(); + loop->run(); }