This commit is contained in:
Michele Caini 2016-12-01 13:22:53 +01:00
parent 7080ce0923
commit 54684f7cf0
3 changed files with 18 additions and 36 deletions

View File

@ -251,16 +251,11 @@ public:
* @param len The lenght of the submitted data.
*/
void write(std::unique_ptr<char[]> data, std::size_t len) {
constexpr std::size_t N = 1;
auto write = this->loop().template resource<details::WriteReq>(
std::unique_ptr<uv_buf_t[], details::WriteReq::Deleter>{
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<details::WriteReq>(
std::unique_ptr<uv_buf_t[], details::WriteReq::Deleter>{
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<typename S>
void write(S &send, std::unique_ptr<char[]> data, std::size_t len) {
constexpr std::size_t N = 1;
auto write = this->loop().template resource<details::WriteReq>(
std::unique_ptr<uv_buf_t[], details::WriteReq::Deleter>{
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<typename S>
void write(S &send, char *data, std::size_t len) {
constexpr std::size_t N = 1;
auto write = this->loop().template resource<details::WriteReq>(
std::unique_ptr<uv_buf_t[], details::WriteReq::Deleter>{
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);

View File

@ -297,19 +297,14 @@ public:
*/
template<typename I = IPv4>
void send(std::string ip, unsigned int port, std::unique_ptr<char[]> data, std::size_t len) {
constexpr std::size_t N = 1;
typename details::IpTraits<I>::Type addr;
details::IpTraits<I>::addrFunc(ip.data(), port, &addr);
auto send = loop().resource<details::SendReq>(
std::unique_ptr<uv_buf_t[], details::SendReq::Deleter>{
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<typename I = IPv4>
void send(std::string ip, unsigned int port, char *data, std::size_t len) {
constexpr std::size_t N = 1;
typename details::IpTraits<I>::Type addr;
details::IpTraits<I>::addrFunc(ip.data(), port, &addr);
auto send = loop().resource<details::SendReq>(
std::unique_ptr<uv_buf_t[], details::SendReq::Deleter>{
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);

View File

@ -23,4 +23,7 @@ TEST(Resource, Basics) {
ASSERT_NO_THROW(resource->data(data));
ASSERT_EQ(*std::static_pointer_cast<int>(resource->data()), 42);
resource->close();
loop->run();
}