mirror of
https://github.com/dragonflydb/dragonfly.git
synced 2025-05-11 10:25:47 +02:00
Add redis parser + test
This commit is contained in:
parent
2bce379341
commit
f2bc27e283
9 changed files with 958 additions and 1 deletions
74
server/resp_expr.cc
Normal file
74
server/resp_expr.cc
Normal file
|
@ -0,0 +1,74 @@
|
|||
// Copyright 2021, Beeri 15. All rights reserved.
|
||||
// Author: Roman Gershman (romange@gmail.com)
|
||||
//
|
||||
|
||||
#include "server/resp_expr.h"
|
||||
|
||||
#include "base/logging.h"
|
||||
|
||||
namespace dfly {
|
||||
|
||||
const char* RespExpr::TypeName(Type t) {
|
||||
switch (t) {
|
||||
case STRING:
|
||||
return "string";
|
||||
case INT64:
|
||||
return "int";
|
||||
case ARRAY:
|
||||
return "array";
|
||||
case NIL_ARRAY:
|
||||
return "nil-array";
|
||||
case NIL:
|
||||
return "nil";
|
||||
case ERROR:
|
||||
return "error";
|
||||
}
|
||||
ABSL_INTERNAL_UNREACHABLE;
|
||||
}
|
||||
|
||||
} // namespace dfly
|
||||
|
||||
namespace std {
|
||||
|
||||
ostream& operator<<(ostream& os, const dfly::RespExpr& e) {
|
||||
using dfly::RespExpr;
|
||||
using dfly::ToAbsl;
|
||||
|
||||
switch (e.type) {
|
||||
case RespExpr::INT64:
|
||||
os << "i" << get<int64_t>(e.u);
|
||||
break;
|
||||
case RespExpr::STRING:
|
||||
os << "'" << ToAbsl(get<RespExpr::Buffer>(e.u)) << "'";
|
||||
break;
|
||||
case RespExpr::NIL:
|
||||
os << "nil";
|
||||
break;
|
||||
case RespExpr::NIL_ARRAY:
|
||||
os << "[]";
|
||||
break;
|
||||
case RespExpr::ARRAY:
|
||||
os << dfly::RespSpan{*get<RespExpr::Vec*>(e.u)};
|
||||
break;
|
||||
case RespExpr::ERROR:
|
||||
os << "e(" << ToAbsl(get<RespExpr::Buffer>(e.u)) << ")";
|
||||
break;
|
||||
}
|
||||
|
||||
return os;
|
||||
}
|
||||
|
||||
ostream& operator<<(ostream& os, dfly::RespSpan ras) {
|
||||
os << "[";
|
||||
if (!ras.empty()) {
|
||||
for (size_t i = 0; i < ras.size() - 1; ++i) {
|
||||
os << ras[i] << ",";
|
||||
}
|
||||
os << ras.back();
|
||||
}
|
||||
os << "]";
|
||||
|
||||
return os;
|
||||
}
|
||||
|
||||
} // namespace std
|
Loading…
Add table
Add a link
Reference in a new issue