Add skeleton for zset and hset commands

This commit is contained in:
Roman Gershman 2022-02-28 23:19:21 +02:00
parent f255d17a72
commit 8c95facb47
6 changed files with 195 additions and 21 deletions

View file

@ -3,11 +3,11 @@ cxx_link(dragonfly base dragonfly_lib)
add_library(dragonfly_lib command_registry.cc common.cc config_flags.cc
conn_context.cc db_slice.cc debugcmd.cc dragonfly_listener.cc
dragonfly_connection.cc engine_shard_set.cc generic_family.cc
dragonfly_connection.cc engine_shard_set.cc generic_family.cc hset_family.cc
list_family.cc main_service.cc memcache_parser.cc rdb_load.cc rdb_save.cc replica.cc
snapshot.cc redis_parser.cc reply_builder.cc script_mgr.cc server_family.cc
set_family.cc
string_family.cc transaction.cc)
string_family.cc transaction.cc zset_family.cc)
cxx_link(dragonfly_lib dfly_core redis_lib uring_fiber_lib
fibers_ext strings_lib http_server_lib tls_lib)

50
src/server/hset_family.cc Normal file
View file

@ -0,0 +1,50 @@
// Copyright 2022, Roman Gershman. All rights reserved.
// See LICENSE for licensing terms.
//
#include "server/hset_family.h"
#include "server/command_registry.h"
namespace dfly {
void HSetFamily::HDel(CmdArgList args, ConnectionContext* cntx) {
}
void HSetFamily::HLen(CmdArgList args, ConnectionContext* cntx) {
}
void HSetFamily::HExists(CmdArgList args, ConnectionContext* cntx) {
}
void HSetFamily::HGet(CmdArgList args, ConnectionContext* cntx) {
}
void HSetFamily::HIncrBy(CmdArgList args, ConnectionContext* cntx) {
}
void HSetFamily::HSet(CmdArgList args, ConnectionContext* cntx) {
}
void HSetFamily::HSetNx(CmdArgList args, ConnectionContext* cntx) {
}
void HSetFamily::HStrLen(CmdArgList args, ConnectionContext* cntx) {
}
using CI = CommandId;
#define HFUNC(x) SetHandler(&HSetFamily::x)
void HSetFamily::Register(CommandRegistry* registry) {
*registry << CI{"HDEL", CO::FAST | CO::WRITE, -3, 1, 1, 1}.HFUNC(HDel)
<< CI{"HLEN", CO::FAST | CO::READONLY, 2, 1, 1, 1}.HFUNC(HLen)
<< CI{"HEXISTS", CO::FAST | CO::READONLY, 3, 1, 1, 1}.HFUNC(HExists)
<< CI{"HGET", CO::FAST | CO::READONLY, 3, 1, 1, 1}.HFUNC(HGet)
<< CI{"HINCRBY", CO::WRITE | CO::DENYOOM | CO::FAST, 4, 1, 1, 1}.HFUNC(HIncrBy)
<< CI{"HSET", CO::WRITE | CO::FAST | CO::DENYOOM, -4, 1, 1, 1}.HFUNC(HSet)
<< CI{"HSETNX", CO::WRITE | CO::DENYOOM | CO::FAST, 4, 1, 1, 1}.HFUNC(HSetNx)
<< CI{"HSTRLEN", CO::READONLY | CO::FAST, 3, 1, 1, 1}.HFUNC(HStrLen);
}
} // namespace dfly

29
src/server/hset_family.h Normal file
View file

@ -0,0 +1,29 @@
// Copyright 2022, Roman Gershman. All rights reserved.
// See LICENSE for licensing terms.
//
#pragma once
#include "server/common_types.h"
namespace dfly {
class ConnectionContext;
class CommandRegistry;
class HSetFamily {
public:
static void Register(CommandRegistry* registry);
private:
static void HDel(CmdArgList args, ConnectionContext* cntx);
static void HLen(CmdArgList args, ConnectionContext* cntx);
static void HExists(CmdArgList args, ConnectionContext* cntx);
static void HGet(CmdArgList args, ConnectionContext* cntx);
static void HIncrBy(CmdArgList args, ConnectionContext* cntx);
static void HSet(CmdArgList args, ConnectionContext* cntx);
static void HSetNx(CmdArgList args, ConnectionContext* cntx);
static void HStrLen(CmdArgList args, ConnectionContext* cntx);
};
} // namespace dfly

64
src/server/zset_family.cc Normal file
View file

@ -0,0 +1,64 @@
// Copyright 2022, Roman Gershman. All rights reserved.
// See LICENSE for licensing terms.
//
#include "server/zset_family.h"
extern "C" {
#include "redis/zset.h"
}
#include "base/logging.h"
#include "server/command_registry.h"
#include "server/conn_context.h"
#include "server/engine_shard_set.h"
namespace dfly {
using namespace std;
namespace {
using CI = CommandId;
} // namespace
void ZSetFamily::ZCard(CmdArgList args, ConnectionContext* cntx) {
(*cntx)->SendLong(0);
}
void ZSetFamily::ZAdd(CmdArgList args, ConnectionContext* cntx) {
(*cntx)->SendLong(0);
}
void ZSetFamily::ZIncrBy(CmdArgList args, ConnectionContext* cntx) {
(*cntx)->SendLong(0);
}
void ZSetFamily::ZRange(CmdArgList args, ConnectionContext* cntx) {
}
void ZSetFamily::ZRangeByScore(CmdArgList args, ConnectionContext* cntx) {
}
void ZSetFamily::ZRem(CmdArgList args, ConnectionContext* cntx) {
(*cntx)->SendLong(0);
}
void ZSetFamily::ZScore(CmdArgList args, ConnectionContext* cntx) {
(*cntx)->SendDouble(0);
}
#define HFUNC(x) SetHandler(&ZSetFamily::x)
void ZSetFamily::Register(CommandRegistry* registry) {
*registry << CI{"ZCARD", CO::FAST | CO::READONLY, 2, 1, 1, 1}.HFUNC(ZCard)
<< CI{"ZADD", CO::FAST | CO::WRITE | CO::DENYOOM, -4, 1, 1, 1}.HFUNC(ZAdd)
<< CI{"ZINCRBY", CO::FAST | CO::WRITE | CO::DENYOOM, 4, 1, 1, 1}.HFUNC(ZIncrBy)
<< CI{"ZREM", CO::FAST | CO::WRITE, -3, 1, 1, 1}.HFUNC(ZRem)
<< CI{"ZRANGE", CO::READONLY, -4, 1, 1, 1}.HFUNC(ZRange)
<< CI{"ZRANGEBYSCORE", CO::READONLY, -4, 1, 1, 1}.HFUNC(ZRangeByScore)
<< CI{"ZSCORE", CO::READONLY | CO::FAST, 3, 1, 1, 1}.HFUNC(ZScore);
}
} // namespace dfly

31
src/server/zset_family.h Normal file
View file

@ -0,0 +1,31 @@
// Copyright 2022, Roman Gershman. All rights reserved.
// See LICENSE for licensing terms.
//
#pragma once
#include <variant>
#include "core/op_status.h"
#include "server/common_types.h"
namespace dfly {
class ConnectionContext;
class CommandRegistry;
class ZSetFamily {
public:
static void Register(CommandRegistry* registry);
private:
static void ZCard(CmdArgList args, ConnectionContext* cntx);
static void ZAdd(CmdArgList args, ConnectionContext* cntx);
static void ZIncrBy(CmdArgList args, ConnectionContext* cntx);
static void ZRange(CmdArgList args, ConnectionContext* cntx);
static void ZRem(CmdArgList args, ConnectionContext* cntx);
static void ZScore(CmdArgList args, ConnectionContext* cntx);
static void ZRangeByScore(CmdArgList args, ConnectionContext* cntx);
};
} // namespace dfly