Dispatch queue memory optimizations (#1103)

Dispatch queue entry optimizations
This commit is contained in:
Vladislav 2023-04-22 09:02:07 +03:00 committed by GitHub
parent 2d73b2bfb0
commit 71147c20a9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 206 additions and 247 deletions

View file

@ -62,15 +62,15 @@ TestConnection::TestConnection(Protocol protocol, io::StringSink* sink)
}
void TestConnection::SendPubMessageAsync(PubMessage pmsg) {
if (pmsg.type == PubMessage::kPublish) {
messages.push_back(move(pmsg));
} else {
if (auto* ptr = std::get_if<PubMessage::MessageData>(&pmsg.data); ptr != nullptr) {
messages.push_back(move(*ptr));
} else if (auto* ptr = std::get_if<PubMessage::SubscribeData>(&pmsg.data); ptr != nullptr) {
RedisReplyBuilder builder(sink_);
const char* action[2] = {"unsubscribe", "subscribe"};
builder.StartArray(3);
builder.SendBulkString(action[pmsg.type == PubMessage::kSubscribe]);
builder.SendBulkString(*pmsg.channel);
builder.SendLong(pmsg.channel_cnt);
builder.SendBulkString(action[ptr->add]);
builder.SendBulkString(ptr->channel);
builder.SendLong(ptr->channel_cnt);
}
}
@ -84,7 +84,7 @@ class BaseFamilyTest::TestConnWrapper {
RespVec ParseResponse(bool fully_consumed);
// returns: type(pmessage), pattern, channel, message.
const facade::Connection::PubMessage& GetPubMessage(size_t index) const;
const facade::Connection::PubMessage::MessageData& GetPubMessage(size_t index) const;
ConnectionContext* cmd_cntx() {
return &cmd_cntx_;
@ -360,7 +360,7 @@ RespVec BaseFamilyTest::TestConnWrapper::ParseResponse(bool fully_consumed) {
return res;
}
const facade::Connection::PubMessage& BaseFamilyTest::TestConnWrapper::GetPubMessage(
const facade::Connection::PubMessage::MessageData& BaseFamilyTest::TestConnWrapper::GetPubMessage(
size_t index) const {
CHECK_LT(index, dummy_conn_->messages.size());
return dummy_conn_->messages[index];
@ -391,8 +391,8 @@ size_t BaseFamilyTest::SubscriberMessagesLen(string_view conn_id) const {
return it->second->conn()->messages.size();
}
const facade::Connection::PubMessage& BaseFamilyTest::GetPublishedMessage(string_view conn_id,
size_t index) const {
const facade::Connection::PubMessage::MessageData& BaseFamilyTest::GetPublishedMessage(
string_view conn_id, size_t index) const {
auto it = connections_.find(conn_id);
CHECK(it != connections_.end());