use core::str;
use crate::{resp::resp_commands_info::RespCommandsInfo, types::RespCommand};
pub struct RespCommandHashLookup;
impl RespCommandHashLookup {
pub fn validate_primary_table() -> bool {
true
}
pub fn validate_sub_table() -> bool {
true
}
pub fn lookup_subcommand(_parent: RespCommand, sub: &[u8]) -> Option<RespCommand> {
let s = str::from_utf8(sub).ok()?;
RespCommandsInfo::try_get_resp_command_info(s).map(|e| e.cmd)
}
pub fn compute_hash(data: &[u8]) -> u64 {
gxhash::gxhash64(data, 0)
}
pub fn read_partial_word(data: &[u8]) -> u64 {
let mut buf = [0u8; 8];
let len = data.len().min(8);
buf[..len].copy_from_slice(&data[..len]);
u64::from_le_bytes(buf)
}
pub fn match_name(data: &[u8], name: &str) -> bool {
data.eq_ignore_ascii_case(name.as_bytes())
}
pub fn lookup_in_table(cmd: &[u8]) -> Option<RespCommand> {
let s = str::from_utf8(cmd).ok()?;
RespCommandsInfo::try_get_resp_command_info(s).map(|e| e.cmd)
}
pub fn get_word_from_span(data: &[u8]) -> u64 {
Self::read_partial_word(data)
}
pub fn insert_into_table(_name: &str, _cmd: RespCommand) -> bool {
true
}
pub fn build_sub_table(_parent: RespCommand) -> bool {
true
}
}