From 9e5f41ed6ebe64a789916794626485460078c420 Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Sat, 19 Jan 2019 01:29:33 +0100 Subject: - Code style fix - Improved vpp binary api interface - Correction in object pool destructor - Fix error in Memif Connector Change-Id: Id1dd9219fc1ac0b3717ae019ebff17373bebc635 Signed-off-by: Mauro Sardara --- .../src/hicn/transport/core/memif_connector.cc | 31 ++++++++++++---------- 1 file changed, 17 insertions(+), 14 deletions(-) mode change 100755 => 100644 libtransport/src/hicn/transport/core/memif_connector.cc (limited to 'libtransport/src/hicn/transport/core/memif_connector.cc') diff --git a/libtransport/src/hicn/transport/core/memif_connector.cc b/libtransport/src/hicn/transport/core/memif_connector.cc old mode 100755 new mode 100644 index 7a672314e..b3785e5c3 --- a/libtransport/src/hicn/transport/core/memif_connector.cc +++ b/libtransport/src/hicn/transport/core/memif_connector.cc @@ -46,6 +46,7 @@ MemifConnector::MemifConnector(PacketReceivedCallback &&receive_callback, is_reconnection_(false), data_available_(false), enable_burst_(false), + closed_(false), app_name_(app_name), receive_callback_(receive_callback), on_reconnect_callback_(on_reconnect_callback), @@ -342,11 +343,14 @@ int MemifConnector::onInterrupt(memif_conn_handle_t conn, void *private_ctx, goto error; } + std::size_t packet_length; for (int i = 0; i < rx; i++) { auto packet = connector->getPacket(); + packet_length = (c->rx_bufs + i)->len; std::memcpy(packet->writableData(), reinterpret_cast((c->rx_bufs + i)->data), - (c->rx_bufs + i)->len); + packet_length); + packet->append(packet_length); if (!connector->input_buffer_.push(std::move(packet))) { TRANSPORT_LOGI("Error pushing packet. Ring buffer full."); @@ -394,20 +398,19 @@ error: return 0; } -// void MemifConnector::runEventsLoop() { -// io_service_.run(); -//} - void MemifConnector::close() { - event_reactor_.stop(); - io_service_.stop(); - - if (memif_worker_ && memif_worker_->joinable()) { - memif_worker_->join(); - TRANSPORT_LOGD("Memif worker joined"); - deleteMemif(); - } else { - TRANSPORT_LOGD("Memif worker not joined"); + if (!closed_) { + closed_ = true; + event_reactor_.stop(); + io_service_.stop(); + + if (memif_worker_ && memif_worker_->joinable()) { + memif_worker_->join(); + TRANSPORT_LOGD("Memif worker joined"); + deleteMemif(); + } else { + TRANSPORT_LOGD("Memif worker not joined"); + } } } -- cgit 1.2.3-korg