Ferricstore.Commands.Dispatcher (ferricstore v0.5.4)

Copy Markdown View Source

Routes Redis command names to the appropriate handler module.

The dispatcher normalises the command name to uppercase and delegates to one of:

Multi-word commands (CLIENT, COMMAND) are routed based on the first word, then the subcommand is extracted from args. CLIENT subcommands require connection state and are dispatched via dispatch_client/3.

Unknown commands return {:error, "ERR unknown command ..."}.

Summary

Functions

Dispatches a command AST produced by the native AST parser.

Dispatches a raw command name and argument list through the canonical command AST dispatcher.

Parses a raw command name and argument list into the same AST used by the native command path.

Functions

dispatch_ast(ast, store)

@spec dispatch_ast(term(), map()) :: term()

Dispatches a command AST produced by the native AST parser.

dispatch_raw(name, args, store)

@spec dispatch_raw(binary(), [term()], map()) :: term()

Dispatches a raw command name and argument list through the canonical command AST dispatcher.

parse_raw(name, args)

@spec parse_raw(binary(), [term()]) ::
  {:ok, binary(), [binary()], term(), [binary()]} | {:error, binary()}

Parses a raw command name and argument list into the same AST used by the native command path.

Native protocol uses this as a compatibility fallback for commands that do not yet have a specialized native opcode. Hot commands should keep using dedicated native opcodes.