From 393a0a4018936134fa1b343523bbafaab606973d Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Tue, 19 Mar 2019 16:21:55 +0100 Subject: [HICN-125 HICN-126] - Add MemBuf as return type of getPayload of transport::core::Packet - Fix incremental index manager Change-Id: Ib557d56b1bf42e3974364c611b825b21f1e3d3f1 Signed-off-by: Mauro Sardara --- .../hicn/transport/interfaces/full_duplex_socket.cc | 20 +++++++++----------- .../hicn/transport/interfaces/rtc_socket_producer.cc | 2 +- 2 files changed, 10 insertions(+), 12 deletions(-) (limited to 'libtransport/src/hicn/transport/interfaces') diff --git a/libtransport/src/hicn/transport/interfaces/full_duplex_socket.cc b/libtransport/src/hicn/transport/interfaces/full_duplex_socket.cc index 3bb51e72e..2e180cf34 100644 --- a/libtransport/src/hicn/transport/interfaces/full_duplex_socket.cc +++ b/libtransport/src/hicn/transport/interfaces/full_duplex_socket.cc @@ -261,7 +261,7 @@ void AsyncFullDuplexSocket::signalProductionToSubscribers( // Todo consider using preallocated pool of membufs auto _payload = utils::MemBuf::create(sizeof(ActionMessage)); _payload->append(sizeof(ActionMessage)); - auto payload = const_cast(interest->getPayload().data()); + auto payload = interest->getPayload()->writableData(); ActionMessage *produce_notification = reinterpret_cast(payload); @@ -294,7 +294,7 @@ AsyncFullDuplexSocket::decodeSynchronizationMessage( const core::Interest &interest) { auto mesg = interest.getPayload(); const MessageHeader *header = - reinterpret_cast(mesg.data()); + reinterpret_cast(mesg->data()); switch (header->msg_type) { case MessageType::ACTION: { @@ -350,14 +350,12 @@ AsyncFullDuplexSocket::decodeSynchronizationMessage( // We saved one round trip :) auto buffer = ContentBuffer(); - const uint8_t *data = mesg.data() + sizeof(PayloadMessage); - buffer->assign(data, data + mesg.length() - sizeof(PayloadMessage)); + const uint8_t *data = mesg->data() + sizeof(PayloadMessage); + buffer->assign(data, data + mesg->length() - sizeof(PayloadMessage)); read_callback_->readBufferAvailable(std::move(buffer)); return createAck(); } - default: { - return std::shared_ptr(nullptr); - } + default: { return std::shared_ptr(nullptr); } } return std::shared_ptr(nullptr); @@ -366,7 +364,7 @@ AsyncFullDuplexSocket::decodeSynchronizationMessage( void AsyncFullDuplexSocket::onControlInterest(ProducerSocket &s, const core::Interest &i) { auto payload = i.getPayload(); - if (payload.length()) { + if (payload->length()) { // Try to decode payload and see if starting an async pull operation auto response = decodeSynchronizationMessage(i); if (response) { @@ -412,14 +410,14 @@ void AsyncFullDuplexSocket::OnConnectCallback::onContentObject( // The ack message should contain the name to be used for notifying // the production of the content to the other part - if (content_object->getPayload().length() == 0) { + if (content_object->getPayload()->length() == 0) { TRANSPORT_LOGW("Connection response message empty...."); return; } SubscriptionResponseMessage *response = reinterpret_cast( - content_object->getPayload().writableData()); + content_object->getPayload()->writableData()); if (response->response.header.msg_type == MessageType::RESPONSE) { if (response->response.return_code == ReturnCode::OK) { @@ -457,7 +455,7 @@ std::shared_ptr AsyncFullDuplexSocket::createAck() { auto response = std::make_shared(name); auto _payload = utils::MemBuf::create(sizeof(ActionMessage)); _payload->append(sizeof(ResponseMessage)); - auto payload = response->getPayload().data(); + auto payload = response->getPayload()->data(); ResponseMessage *response_message = (ResponseMessage *)payload; response_message->header.msg_type = MessageType::RESPONSE; response_message->header.reserved[0] = 0; diff --git a/libtransport/src/hicn/transport/interfaces/rtc_socket_producer.cc b/libtransport/src/hicn/transport/interfaces/rtc_socket_producer.cc index 87cf27b75..00cc82543 100644 --- a/libtransport/src/hicn/transport/interfaces/rtc_socket_producer.cc +++ b/libtransport/src/hicn/transport/interfaces/rtc_socket_producer.cc @@ -163,7 +163,7 @@ void RTCProducerSocket::onInterest(Interest::Ptr &&interest) { void RTCProducerSocket::sendNack(const Interest &interest) { nack_->setName(interest.getName()); - uint32_t *payload_ptr = (uint32_t *)nack_->getPayload().data(); + uint32_t *payload_ptr = (uint32_t *)nack_->getPayload()->data(); *payload_ptr = currentSeg_; *(++payload_ptr) = bytesProductionRate_; -- cgit 1.2.3-korg