NAME¶
DR::Tarantool::AsyncClient - async client for tarantool
<
http://tarantool.org>
SYNOPSIS¶
use DR::Tarantool::AsyncClient 'tarantool';
DR::Tarantool::AsyncClient->connect(
host => '127.0.0.1',
port => 12345,
spaces => {
0 => {
name => 'users',
fields => [
qw(login password role),
{
name => 'counter',
type => 'NUM'
}
],
indexes => {
0 => 'login',
1 => [ qw(login password) ],
}
},
2 => {
name => 'roles',
fields => [ qw(name title) ],
indexes => {
0 => 'name',
1 => {
name => 'myindex',
fields => [ 'name', 'title' ],
}
}
}
}
sub {
my ($client) = @_;
...
}
);
$client->ping(sub { ... });
$client->insert('space', [ 'user', 10, 'password' ], sub { ... });
$client->call_lua(foo => ['arg1', 'arg2'], sub { });
client->select('space', 1, sub { ... });
$client->delete('space', 1, sub { ... });
$client->update('space', 1, [ passwd => set => 'abc' ], sub { .. });
Class methods¶
connect¶
Connects to <
tarantool:http://tarantool.org>, returns (by callback) object
that can be used to make requests.
DR::Tarantool::AsyncClient->connect(
host => $host,
port => $port,
spaces => $spaces,
reconnect_period => 0.5,
reconnect_always => 1,
sub {
my ($obj) = @_;
if (ref $obj) {
... # handle errors
}
...
}
);
Arguments
- host & port
- Address where tarantool is started.
- spaces
- A hash with spaces description or DR::Tarantool::Spaces
reference.
- reconnect_period & reconnect_always
- See DR::Tarantool::LLClient for more details.
Attributes¶
space¶
Returns space object by name (or by number). See perldoc DR::Tarantool::Spaces
for more details.
Worker methods¶
All methods receive callbacks that will receive the following arguments:
- status
- If success the field will have value 'ok'.
- tuple(s) or code of error
- If success, the second argument will contain tuple(s) that
extracted by request.
- errorstr
- Error string if error was happened.
sub {
if ($_[0] eq 'ok') {
my ($status, $tuples) = @_;
...
} else {
my ($status, $code, $errstr) = @_;
}
}
ping¶
Pings server.
$client->ping(sub { ... });
Arguments
- cb
insert¶
Inserts tuple into database.
$client->insert('space', [ 'user', 10, 'password' ], sub { ... });
$client->insert('space', \@tuple, $flags, sub { ... });
Arguments
- space_name
- tuple
- flags (optional)
- Flag list described in perldoc ":constant" in
DR::Tarantool.
- callback
call_lua¶
Calls lua function. All arguments translates to lua as strings (As is). Returned
tuples can be unpacked by space or by format.
$client->call_lua(foo => ['arg1', 'arg2'], sub { });
$client->call_lua(foo => [], 'space_name', sub { ... });
$client->call_lua(foo => \@args,
flags => $f,
space => $space_name,
sub { ... }
);
$client->call_lua(foo => \@args,
fields => [ qw(a b c) ],
sub { ... }
);
$client->call_lua(foo => \@args,
fields => [ qw(a b c), { type => 'NUM', name => 'abc'} ... ],
sub { ... }
);
Arguments
- function name
- function arguments
- space name or the other optional arguments
- callback
Optional arguments
- space
- Space name. Use the argument if Your function returns
tuple(s) from a described in connect space.
- fields
- Output fields format (like 'fields' in connect
method).
- flags
- Reserved option.
- args
- Argument fields format.
select¶
Selects tuple(s) from database.
$tuples = $client->select('space', 1, sub { ... });
$tuples = $client->select('space', [1, 2], sub { ... });
$tuples = $client->select('space_name',
[1,2,3] => 'index_name', sub { ... });
Arguments
- space name
- key(s)
- optional arguments
- callback
optional arguments
The section can contain only one element: index name, or hash with the following
fields:
- index
- index name or number
- limit
- offset
delete¶
Deletes tuple.
$client->delete('space', 1, sub { ... });
$client->delete('space', $key, $flags, sub { ... });
Arguments
- space name
- key
- flags (optional)
- Flag list described in perldoc ":constant" in
DR::Tarantool.
- callback
update¶
Updates tuple.
$client->update('space', 1, [ passwd => set => 'abc' ], sub { .. });
$client->update(
'space',
1,
[ [ passwd => set => 'abc' ], [ login => 'delete' ] ],
sub { ... }
);
Arguments
- space name
- key
- operations list
- flags (optional)
- Flag list described in perldoc ":constant" in
DR::Tarantool.
- callback
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/>.