MCPcopy Create free account
hub / github.com/apache/kvrocks / Execute

Method Execute

src/commands/cmd_server.cc:634–701  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

632 }
633
634 Status Execute([[maybe_unused]] engine::Context &ctx, Server *srv, Connection *conn, std::string *output) override {
635 if (subcommand_ == "list") {
636 *output = conn->VerbatimString("txt", srv->GetClientsStr());
637 return Status::OK();
638 } else if (subcommand_ == "info") {
639 *output = conn->VerbatimString("txt", conn->ToString());
640 return Status::OK();
641 } else if (subcommand_ == "setname") {
642 conn->SetName(conn_name_);
643 *output = redis::RESP_OK;
644 return Status::OK();
645 } else if (subcommand_ == "getname") {
646 std::string name = conn->GetName();
647 *output = name == "" ? conn->NilString() : redis::BulkString(name);
648 return Status::OK();
649 } else if (subcommand_ == "id") {
650 *output = redis::Integer(conn->GetID());
651 return Status::OK();
652 } else if (subcommand_ == "kill") {
653 int64_t killed = 0;
654 srv->KillClient(&killed, addr_, id_, kill_type_, skipme_, conn);
655 if (new_format_) {
656 *output = redis::Integer(killed);
657 } else {
658 if (killed == 0)
659 return {Status::RedisExecErr, "No such client"};
660 else
661 *output = redis::RESP_OK;
662 }
663 return Status::OK();
664 } else if (subcommand_ == "reply") {
665 conn->SetReplyMode(reply_mode_);
666 if (reply_mode_ != redis::Connection::ReplyMode::SKIP) {
667 *output = redis::RESP_OK;
668 }
669 return Status::OK();
670 } else if (subcommand_ == "pause") {
671 if (!conn->IsAdmin()) {
672 return {Status::RedisExecErr, errAdminPermissionRequired};
673 }
674 uint64_t now_ms = util::GetTimeStampMS();
675 srv->PauseConns(now_ms + pause_timeout_ms_, pause_mode_);
676 WARN("CLIENT PAUSE executed, timeout={}ms, mode={}, addr: {}", pause_timeout_ms_,
677 pause_mode_ == PauseMode::kWrite ? "write" : "all", conn->GetAddr());
678 *output = redis::RESP_OK;
679 return Status::OK();
680 } else if (subcommand_ == "unpause") {
681 if (!conn->IsAdmin()) {
682 return {Status::RedisExecErr, errAdminPermissionRequired};
683 }
684 srv->UnpauseConns();
685 *output = redis::RESP_OK;
686 return Status::OK();
687 } else if (subcommand_ == "setinfo") {
688 if (setinfo_lib_name_) {
689 conn->SetLibName(*setinfo_lib_name_);
690 }
691 if (setinfo_lib_ver_) {

Callers

nothing calls this directly

Calls 15

BulkStringFunction · 0.85
GetTimeStampMSFunction · 0.85
VerbatimStringMethod · 0.80
SetNameMethod · 0.80
NilStringMethod · 0.80
GetIDMethod · 0.80
SetReplyModeMethod · 0.80
IsAdminMethod · 0.80
PauseConnsMethod · 0.80
GetAddrMethod · 0.80
UnpauseConnsMethod · 0.80
SetLibNameMethod · 0.80

Tested by

no test coverage detected