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