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.

$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.