From b8bd68b9544b7e4463178f54b54850cc44f2cb0e Mon Sep 17 00:00:00 2001 From: michele papalini Date: Tue, 22 Jan 2019 10:16:53 +0100 Subject: jira issue HICN-7 Change-Id: Id07bd589e06852f0788b823735af1b95e09bba0a Signed-off-by: michele papalini --- .../transport/interfaces/rtc_socket_producer.cc | 27 +++++++++++----------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'libtransport/src/hicn/transport/interfaces/rtc_socket_producer.cc') diff --git a/libtransport/src/hicn/transport/interfaces/rtc_socket_producer.cc b/libtransport/src/hicn/transport/interfaces/rtc_socket_producer.cc index ec8c4c69e..7b39e7ac9 100644 --- a/libtransport/src/hicn/transport/interfaces/rtc_socket_producer.cc +++ b/libtransport/src/hicn/transport/interfaces/rtc_socket_producer.cc @@ -47,7 +47,9 @@ RTCProducerSocket::RTCProducerSocket(asio::io_service &io_service) bytesProductionRate_(0), packetsProductionRate_(INIT_PACKET_PRODUCTION_RATE), perSecondFactor_(1000 / STATS_INTERVAL_DURATION) { - nack_->appendPayload(utils::MemBuf::create(NACK_HEADER_SIZE)); + auto nack_payload = utils::MemBuf::create(NACK_HEADER_SIZE); + nack_payload->append(NACK_HEADER_SIZE); + nack_->appendPayload(std::move(nack_payload)); lastStats_ = std::chrono::steady_clock::now(); srand(time(NULL)); prodLabel_ = ((rand() % 255) << 24UL); @@ -100,24 +102,23 @@ void RTCProducerSocket::produce(const uint8_t *buf, size_t buffer_size) { updateStats(buffer_size + headerSize_ + TIMESTAMP_LEN); - std::shared_ptr content_object = - std::make_shared(flowName_.setSuffix(currentSeg_)); - auto payload = utils::MemBuf::copyBuffer(buf, buffer_size, TIMESTAMP_LEN); - - // content_object->setLifetime(content_object_expiry_time_); - content_object->setLifetime(1000); // XXX this should be set by the APP + ContentObject content_object(flowName_.setSuffix(currentSeg_)); uint64_t timestamp = std::chrono::duration_cast( std::chrono::system_clock::now().time_since_epoch()) .count(); - payload->prepend(TIMESTAMP_LEN); - uint8_t *payloadPointer = payload->writableData(); - *(uint64_t *)payloadPointer = timestamp; - content_object->appendPayload(std::move(payload)); + auto payload = utils::MemBuf::create(buffer_size + TIMESTAMP_LEN); + + memcpy(payload->writableData(), ×tamp, TIMESTAMP_LEN); + memcpy(payload->writableData() + TIMESTAMP_LEN, buf, buffer_size); + payload->append(buffer_size + TIMESTAMP_LEN); + content_object.appendPayload(std::move(payload)); + + content_object.setLifetime(1000); // XXX this should be set by the APP - content_object->setPathLabel(prodLabel_); - portal_->sendContentObject(*content_object); + content_object.setPathLabel(prodLabel_); + portal_->sendContentObject(content_object); currentSeg_++; } -- cgit 1.2.3-korg