Shortcut for creating Aggregate actors.
The first arg is the "EXISTS" sub-command, so exclude it from args.
Constructs the broadcast Command for each KeyNode actor.
Utility for handling boundary args that wrap around ends of sequences and count backwards when negative.
These are the args we'll use in the Command that is broadcast to all KeyNode actors, since keys is overtaken in meaning.
The current command - normally will be set when a Command arrives via the actor's receive method.
Timeout for a single command.
Sequence of Command instances that are initially sent when aggregation begins.
Each KeyNode returns a list of SHA1 script values that exist, so on completion, we build a Set of these and return a sequence of bools of the original arg list of SHA1 values mapped to whether they exist or not.
Flag that enables detailed command debugging.
Retrieves a duration config setting as milliseconds, and handles the value not being a duration value, so we can do something like set it to "off", in which case we default to 0.
For keys we use a range of integers, one for each KeyNode actor in the system.
Utility for dropping extraneous zeros from floats when converting to strings, for consistency with Redis' INCRBYFLOAT/HINCRBYFLOAT commands and sorted set scores.
Returns responses ordered by their original Command order.
Utility for glob-style filtering.
Utility for selecting a random item.
Starts the aggregation process when the original Command is first received, and receives each Node response afterwards, until all responses have arrived, at which point the final response for the ClientNode is constructed and sent back, and the Aggregate actor is shut down.
Sends a Response (usually the result of a command) back to the command's destination (usually a ClientNode sending a Command).
Responses received mapped to Command IDs.
Shortcut route method for sending command input without a constructed Command instance, using the state of the current command (eg: db, clientID).
Sends an unrouted Command to one or more KeyNode actors, either by routing by key, or broadcasting to all.
Utility for scan-style commands, namely SCAN/SSCAN/HSCAN/ZSCAN.
Utility for slicing sequences, for commands such as SLICE, GETRANGE, LRANGE, etc.
Stops the actor - we define this shortcut to give subclassing traits the chance to override it and inject extra shutdown behavior that concrete actors need not know about.