The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

RedisDB::Parse::Redis - redis protocol parser for RedisDB

SYNOPSIS

    use RedisDB::Parser;
    my $parser = RedisDB::Parser->new( master => $ref );
    $parser->push_callback(\&cb);
    $parser->parse($data);

DESCRIPTION

This module provides methods to build redis requests and parse replies from the server.

METHODS

$class->new(%params)

Creates new parser object. Following parameters may be specified:

master

Arbitrary reference. It is passed to callbacks as the first argument. Normally it would be a reference to the object managing connection to redis-server. Reference is weakened.

default_callback

Module allows you to set a separate callback for every new message. If there are no callbacks in queue, default_callback will be used.

utf8

If this parameter is set all data will be encoded as UTF-8 when building requests, and decoded from UTF-8 when parsing replies. By default module expects all data to be octet sequences.

error_class

If parsed message is an error message, parser will create object of the specified class with the message as the only constructor argument, and pass this object to the callback. By default RedisDB::Parser::Error class is used.

$class->implementation

Returns name of the package that actually implements parser functionality. It may be either RedisDB::Parser::PP or RedisDB::Parser::XS.

$self->build_request($command, @arguments)

Encodes $command and @arguments as redis request.

$self->push_callback(\&cb)

Pushes callback to the queue of callbacks.

$self->set_default_callback(\&cb)

Set callback to invoke when there are no callbacks in queue.

$self->callbacks

Returns true if there are callbacks in queue

$self->propagate_reply($reply)

Invoke every callback from queue and the default callback with the given $reply. Can be used e.g. if connection to server has been lost to invoke every callback with error message.

$self->parse($data)

Process new data received from the server. For every new reply method will invoke callback, either the one from the queue that was added using push_callback method, or default callback if the queue is empty. Callback passed two arguments: master value, and decoded reply from the server.

SEE ALSO

RedisDB

AUTHOR

Pavel Shaydo, <zwon at cpan.org>

LICENSE AND COPYRIGHT

Copyright 2011-2013 Pavel Shaydo.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.