DR::Tarantool::LLClient(3pm) User Contributed Perl Documentation DR::Tarantool::LLClient(3pm)
NAME
DR::Tarantool::LLClient - low level async client for tarantool
SYNOPSIS
DR::Tarantool::LLClient->connect(
host => '127.0.0.1',
port => '33033',
cb => {
my ($tnt) = @_;
...
}
);
$tnt->ping( sub { .. } );
$tnt->insert(0, [ 1, 2, 3 ], sub { ... });
$tnt->select(1, 0, [ [ 1, 2 ], [ 3, 4 ] ], sub { ... });
$tnt->update(0, [ 1 ], [ [ 1 => add pack 'L<', 1 ] ], sub { ... });
$tnt->call_lua( 'box.select', [ 0, 1, 2 ], sub { ... });
DESCRIPTION
The module provides low-level interface to tarantool <http://tarantool.org>
METHODS
All methods receive callback as the last argument. The callback receives HASHREF value with the following fields:
status
Done status:
fatal
Fatal error was happenned. Server closed connection or returned broken package.
buffer
Internal driver error.
error
Request wasn't done: database returned error.
ok Request was done.
errstr
If an error was happenned contains error description.
code
Contains reply code.
req_id
Contains request id. (see protocol documentation <https://github.com/mailru/tarantool/blob/master/doc/box-protocol.txt>)
type
Contains request type (see protocol documentation <https://github.com/mailru/tarantool/blob/master/doc/box-protocol.txt>)
count
Contains count of returned tuples.
tuples
Contains returned tuples (ARRAYREF of ARRAYREF).
If You use NUM or NUM64 values in database You have to pack them before requests and unpack them after response by hand. This is low-level
driver :).
connect
Creates a connection to tarantool
DR::Tarantool::LLClient->connect(
host => '127.0.0.1',
port => '33033',
cb => {
my ($tnt) = @_;
...
}
);
Arguments
host & port
Host and port to connect.
reconnect_period
Interval to reconnect after fatal errors or unsuccessful connects. If the field is defined and more than zero driver will try to
reconnect server using this interval.
Important: driver wont reconnect after the first unsuccessful connection. It will call callback instead.
reconnect_always
Constantly trying to reconnect even after the first unsuccessful connection.
cb Done callback. The callback will receive a client instance that is already connected with server or error string.
is_connected
Returns TRUE if driver and server are connected with.
connection_status
Returns string that informs You about status of connection. Return value can be:
ok Connection is established
not_connected
Connection isn't established yet, or was disconnected.
connecting
Driver tries connecting server
fatal
Driver tried connecting but receives an error. Driver can repeat connecting processes (see reconnect_period option).
ping
Pings tarantool.
$tnt->ping( sub { .. } );
Arguments
callback for results
insert
Inserts tuple.
$tnt->insert(0, [ 1, 2, 3 ], sub { ... });
$tnt->insert(0, [ 4, 5, 6 ], $flags, sub { .. });
Arguments
space
tuple
flags (optional)
callback for results
select
Selects tuple(s).
$tnt->select(1, 0, [ [ 1, 2 ], [ 3, 4 ] ], sub { ... });
$tnt->select(1, 0, [ [ 1, 2 ], [ 3, 4 ] ], 1, sub { ... });
$tnt->select(1, 0, [ [ 1, 2 ], [ 3, 4 ] ], 1, 2, sub { ... });
Arguments
space
index
tuple_keys
limit (optional)
If limit isn't defined or zero select will extract all records without limit.
offset (optional)
Default value is 0.
callback for results
update
Updates tuple.
$tnt->update(0, [ 1 ], [ [ 1 => add 1 ] ], sub { ... });
$tnt->update(
0, # space
[ 1 ], # key
[ [ 1 => add 1 ], [ 2 => add => 1 ], # operations
$flags, # flags
sub { ... } # callback
);
$tnt->update(0, [ 1 ], [ [ 1 => add 1 ] ], $flags, sub { ... });
Arguments
space
tuple_key
operations list
flags (optional)
callback for results
delete
Deletes tuple.
$tnt->delete( 0, [ 1 ], sub { ... });
$tnt->delete( 0, [ 1 ], $flags, sub { ... });
Arguments
space
tuple_key
flags (optional)
callback for results
call_lua
calls lua function.
$tnt->call_lua( 'box.select', [ 0, 1, 2 ], sub { ... });
$tnt->call_lua( 'box.select', [ 0, 1, 2 ], $flags, sub { ... });
Arguments
name of function
tuple_key
flags (optional)
callback for results
COPYRIGHT AND LICENSE
Copyright (C) 2011 Dmitry E. Oboukhov <unera@debian.org>
Copyright (C) 2011 Roman V. Nikolaev <rshadow@rambler.ru>
This program is free software, you can redistribute it and/or
modify it under the terms of the Artistic License.
VCS
The project is placed git repo on github: https://github.com/unera/dr-tarantool/ <https://github.com/unera/dr-tarantool/>.
perl v5.14.2 2012-06-04 DR::Tarantool::LLClient(3pm)