From 325ee7da61138afe7551e4b5dabb8671041c3785 Mon Sep 17 00:00:00 2001 From: Jim Walker Date: Mon, 28 Nov 2022 16:25:15 +0000 Subject: [PATCH] MB-54516: Refactoring in dcp/response.h Change return type of cb::const_byte_buffer getEventData to use std::string_view. Remove const from makeItem as it changes the refcount of the shared_ptr Change-Id: I01096fefbad2f46a7b46330bcfbb37feb5e2f5b1 Reviewed-on: https://review.couchbase.org/c/kv_engine/+/183320 Well-Formed: Restriction Checker Tested-by: Jim Walker Reviewed-by: Paolo Cocchi --- engines/ep/src/dcp/active_stream.cc | 2 +- engines/ep/src/dcp/active_stream.h | 3 +-- engines/ep/src/dcp/producer.cc | 3 ++- engines/ep/src/dcp/response.h | 31 ++++++++++++++------------- engines/ep/src/systemevent_factory.cc | 3 +-- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/engines/ep/src/dcp/active_stream.cc b/engines/ep/src/dcp/active_stream.cc index 974736ba26..aa046838f1 100644 --- a/engines/ep/src/dcp/active_stream.cc +++ b/engines/ep/src/dcp/active_stream.cc @@ -1006,7 +1006,7 @@ static bool shouldModifyItem(const queued_item& item, } std::unique_ptr ActiveStream::makeResponseFromItem( - const queued_item& item, SendCommitSyncWriteAs sendCommitSyncWriteAs) { + queued_item& item, SendCommitSyncWriteAs sendCommitSyncWriteAs) { // Note: This function is hot - it is called for every item to be // sent over the DCP connection. diff --git a/engines/ep/src/dcp/active_stream.h b/engines/ep/src/dcp/active_stream.h index d095f34ff9..6941e61154 100644 --- a/engines/ep/src/dcp/active_stream.h +++ b/engines/ep/src/dcp/active_stream.h @@ -506,8 +506,7 @@ class ActiveStream : public Stream, * AbortSyncWrite. */ std::unique_ptr makeResponseFromItem( - const queued_item& item, - SendCommitSyncWriteAs sendCommitSyncWriteAs); + queued_item& item, SendCommitSyncWriteAs sendCommitSyncWriteAs); /* The transitionState function is protected (as opposed to private) for * testing purposes. diff --git a/engines/ep/src/dcp/producer.cc b/engines/ep/src/dcp/producer.cc index 5e4b000fb6..304f04a238 100644 --- a/engines/ep/src/dcp/producer.cc +++ b/engines/ep/src/dcp/producer.cc @@ -825,7 +825,8 @@ cb::engine_errc DcpProducer::step(DcpMessageProducersIface& producers) { s->getVersion(), {reinterpret_cast(s->getKey().data()), s->getKey().size()}, - s->getEventData(), + {reinterpret_cast(s->getEventData().data()), + s->getEventData().size()}, resp->getStreamId()); break; } diff --git a/engines/ep/src/dcp/response.h b/engines/ep/src/dcp/response.h index 529b7f757a..11685c455e 100644 --- a/engines/ep/src/dcp/response.h +++ b/engines/ep/src/dcp/response.h @@ -836,7 +836,7 @@ class SystemEventMessage : public DcpResponse { sizeof(uint32_t) + sizeof(uint8_t); virtual mcbp::systemevent::id getSystemEvent() const = 0; virtual std::string_view getKey() const = 0; - virtual cb::const_byte_buffer getEventData() const = 0; + virtual std::string_view getEventData() const = 0; virtual mcbp::systemevent::version getVersion() const = 0; }; @@ -884,8 +884,9 @@ class SystemEventConsumerMessage : public SystemEventMessage { return key; } - cb::const_byte_buffer getEventData() const override { - return {eventData.data(), eventData.size()}; + std::string_view getEventData() const override { + return {reinterpret_cast(eventData.data()), + eventData.size()}; } mcbp::systemevent::version getVersion() const override { @@ -921,8 +922,8 @@ class SystemEventProducerMessage : public SystemEventMessage { * @return a SystemEventMessage unique pointer constructed from the * queued_item data. */ - static std::unique_ptr - make(uint32_t opaque, const queued_item& item, cb::mcbp::DcpStreamId sid); + static std::unique_ptr make( + uint32_t opaque, queued_item& item, cb::mcbp::DcpStreamId sid); uint32_t getMessageSize() const override { return SystemEventMessage::baseMsgBytes + getKey().size() + @@ -989,8 +990,8 @@ class CollectionCreateProducerMessage : public SystemEventProducerMessage { return {key.data(), key.size()}; } - cb::const_byte_buffer getEventData() const override { - return {reinterpret_cast(&eventData), + std::string_view getEventData() const override { + return {reinterpret_cast(&eventData), Collections::CreateEventDcpData::size}; } @@ -1023,8 +1024,8 @@ class CollectionCreateWithMaxTtlProducerMessage return {key.data(), key.size()}; } - cb::const_byte_buffer getEventData() const override { - return {reinterpret_cast(&eventData), + std::string_view getEventData() const override { + return {reinterpret_cast(&eventData), Collections::CreateWithMaxTtlEventDcpData::size}; } @@ -1053,8 +1054,8 @@ class CollectionDropProducerMessage : public SystemEventProducerMessage { return {/* no key value for a drop event*/}; } - cb::const_byte_buffer getEventData() const override { - return {reinterpret_cast(&eventData), + std::string_view getEventData() const override { + return {reinterpret_cast(&eventData), Collections::DropEventDcpData::size}; } @@ -1085,8 +1086,8 @@ class ScopeCreateProducerMessage : public SystemEventProducerMessage { return {key.data(), key.size()}; } - cb::const_byte_buffer getEventData() const override { - return {reinterpret_cast(&eventData), + std::string_view getEventData() const override { + return {reinterpret_cast(&eventData), Collections::CreateScopeEventDcpData::size}; } @@ -1115,8 +1116,8 @@ class ScopeDropProducerMessage : public SystemEventProducerMessage { return {/* no key value for a drop event*/}; } - cb::const_byte_buffer getEventData() const override { - return {reinterpret_cast(&eventData), + std::string_view getEventData() const override { + return {reinterpret_cast(&eventData), Collections::DropScopeEventDcpData::size}; } diff --git a/engines/ep/src/systemevent_factory.cc b/engines/ep/src/systemevent_factory.cc index f25a5caa95..f13d948521 100644 --- a/engines/ep/src/systemevent_factory.cc +++ b/engines/ep/src/systemevent_factory.cc @@ -106,7 +106,7 @@ std::pair SystemEventFactory::getTypeAndID( } std::unique_ptr SystemEventProducerMessage::make( - uint32_t opaque, const queued_item& item, cb::mcbp::DcpStreamId sid) { + uint32_t opaque, queued_item& item, cb::mcbp::DcpStreamId sid) { // Always ensure decompressed as we are about to use the value item->decompressValue(); switch (SystemEvent(item->getFlags())) { @@ -122,7 +122,6 @@ std::unique_ptr SystemEventProducerMessage::make( opaque, item, data, sid); } else { return std::make_unique( - opaque, item, data, sid); } } else {