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

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)

type

Contains request type (see protocol documentation)

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

last_code

Returns code of last operation (undef if there was no operation done).

last_error_string

Returns error string of last operation (undef if there was no error).

Logging

The module can log requests/responses. You can turn logging on by environment variables:

TNT_LOG_DIR

LLClient will record all requests/responses into the directory.

TNT_LOG_ERRDIR

LLClient will record requests/responses into the directory if an error was happened.

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