echoCommand
redis cli에는 echo명령어가 있다. redis 프로젝트 구조를 보고 echo명령어를 똑같이 만들어보자.
일단 redis command는 src/commands 밑에 .json 형태로 저장되어 있다. utils/generate-command-code.py에 json 파일을 읽어서 commands.def를 만드는 부분이 있다.
# Create all command objects
print("Processing json files...")
for filename in glob.glob('%s/commands/*.json' % srcdir):
with open(filename, "r") as f:
for name, desc in d.items():
create_command(name, desc)
except json.decoder.JSONDecodeError as err:
print("Error processing %s: %s" % (filename, err))
echo.json
그래서 echo.json 파일을 보고 똑같은 형식으로 echoJongun.json을 추가해줬다.
"summary": "Returns the given string.",
"function": "echoCommand",
"description": "The given string",
function 부분이 아마 server.c에 있는 커맨드 함수 이름인 것 같다.
server.c에 함수를 추가해줬다.
void echoJongunCommand(client *c) {
addReplyBulk(c,c->argv[1]);
server.h에도 함수 정의를 추가했다.
void echoJongunCommand(client *c);
완성!
make로 다시 빌드를 하고 실행해보니 추가한 커맨드가 잘 동작한다.