An open API service indexing awesome lists of open source software.

https://github.com/igorcoding/ev-tarantool16

High performance low-level EV based Tarantool 1.6+ client
https://github.com/igorcoding/ev-tarantool16

async-programming database-connector high-performance libev perl tarantool

Last synced: 5 months ago
JSON representation

High performance low-level EV based Tarantool 1.6+ client

Awesome Lists containing this project

README

          

NAME
EV::Tarantool16 - EV client for Tarantool 1.6

VESRION
Version 1.39

SYNOPSIS
use EV::Tarantool16;
my $c; $c = EV::Tarantool16->new({
host => '127.0.0.1',
port => 3301,
username => 'test_user',
password => 'test_passwd',
reconnect => 0.2,
connected => sub {
warn "connected: @_";
EV::unloop;
},
connfail => sub {
warn "connfail: @_ / $!";
EV::unloop;
},
disconnected => sub {
warn "discon: @_ / $!";
EV::unloop;
},
});

$c->connect;
EV::loop;

$c->ping(sub {
my $a = @_[0];
diag Dumper \@_ if !$a;
EV::unloop;
});
EV::loop;

SUBROUTINES/METHODS
new {option => value,...}
Create new EV::Tarantool16 instance.

host => $address
Address connect to.

port => $port
Port connect to.

username => $username
Username.

password => $password
Password.

reconnect => $reconnect
Reconnect timeout.

log_level => $log_level
Logging level. Values: (0: None), (1: Error), (2: Warning), (3:
Info), (4: Debug)

cnntrace => $cnntrace
Enable (1) or disable(0) evcnn tracing.

ares_reuse => $ares_reuse
Enable (1) or disable(0) c-ares connection reuse (default = 0).

wbuf_limit => $wbuf_limit
Write vector buffer length limit. Defaults to 16384. Set wbuf_limit
= 0 to disable write buffer length check on every request.

connected => $sub
Called when connection to Tarantool 1.6 instance is established,
authenticated successfully and retrieved spaces information from it.

connfail => $sub
Called when connection to Tarantool 1.6 instance failed.

disconnected => $sub
Called when Tarantool 1.6 instance disconnected.

connect
Connect to Tarantool 1.6 instance. EV::Tarantool16->connected is called
when connection is established.

disconnect
Disconnect from Tarantool 1.6 instance. EV::Tarantool16->disconnected is
called afterwards.

ping $opts, $cb->($result)
Execute ping request

$opts
HASHREF of additional options to the request

timeout => $timeout
Request execution timeout

eval $lua_expression, $tuple_args, $opts, $cb->($result)
Execute eval request

$lua_expression
Lua code that will be run in tarantool

tuple_args
Tuple (ARRAYREF) that will be passed as argument in lua code

$opts
HASHREF of additional options to the request

timeout => $timeout
Request execution timeout

space => $space
This space definition will be used to decode response tuple

in => $in
Format for parsing input (string). One char is for one argument
('s' = string, 'n' = number, 'a' = array, '*' = anything (type
is determined automatically))

call $function_name, $tuple_args, $opts, $cb->($result)
Execute eval request

$function_name
Lua function that will be called in tarantool

tuple_args
Tuple (ARRAYREF) that will be passed as argument in lua code

$opts
HASHREF of additional options to the request

timeout => $timeout
Request execution timeout

space => $space
This space definition will be used to decode response tuple

in => $in
Format for parsing input (string). One char is for one argument
('s' = string, 'n' = number, 'a' = array, '*' = anything (type
is determined automatically))

select $space_name, $keys, $opts, $cb->($result)
Execute select request

$space_name
Tarantool space name.

$keys
Select keys (ARRAYREF or HASHREF).

$opts
HASHREF of additional options to the request

timeout => $timeout
Request execution timeout

hash => $hash
Use hash as result

index => $index
Index name or id to use

limit => $limit
Select limit

offset => $offset
Select offset

iterator => $iterator
Select iterator type. It is recommended to use the predefined
constants EV::Tarantool16::INDEX_#iterator_name# (eg.
EV::Tarantool16::INDEX_EQ, EV::Tarantool16::INDEX_GE and so on).

List of possible iterator names:

* EQ

* REQ

* ALL

* LT

* LE

* GE

* GT

* BITS_ALL_SET

* BITS_ANY_SET

* BITS_ALL_NOT_SET

* OVERLAPS

* NEIGHBOR

You can also use string names as the value to this option (like
'EQ' or 'LT').

in => $in
Format for parsing input (string). One char is for one argument
('s' = string, 'n' = number, 'a' = array, '*' = anything (type
is determined automatically))

insert $space_name, $tuple, $opts, $cb->($result)
Execute insert request

$space_name
Tarantool space name.

$tuple
Tuple to be inserted (ARRAYREF or HASHREF).

$opts
HASHREF of additional options to the request

timeout => $timeout
Request execution timeout

hash => $hash
Use hash as result

replace => $replace
Insert(0) or replace(1) a tuple

in => $in
Format for parsing input (string). One char is for one argument
('s' = string, 'n' = number, 'a' = array, '*' = anything (type
is determined automatically))

replace $space_name, $tuple, $opts, $cb->($result)
Execute replace request (same as insert, but replaces tuple if already
exists). ($opts->{replace} = 1)

update $space_name, $key, $operations, $opts, $cb->($result)
Execute update request

$space_name
Tarantool space name.

$key
Select key where to perform update (ARRAYREF or HASHREF).

$operations
Update operations (ARRAYREF) in this format: [$field_no =>
$operation, $operation_args] Please refer to Tarantool 1.6
documentaion for more details.

$opts
HASHREF of additional options to the request

timeout => $timeout
Request execution timeout

hash => $hash
Use hash as result

index => $index
Index name or id to use

in => $in
Format for parsing input (string). One char is for one argument
('s' = string, 'n' = number, 'a' = array, '*' = anything (type
is determined automatically))

upsert $space_name, $tuple, $operations, $opts, $cb->($result)
Execute upsert request

$space_name
Tarantool space name.

$tuple
A tuple that will be inserted to Tarantool if there is no tuple like
it already (ARRAYREF or HASHREF).

$operations
Update operations (ARRAYREF) in this format: [$field_no =>
$operation, $operation_args] Please refer to Tarantool 1.6
documentaion for more details.

$opts
HASHREF of additional options to the request

timeout => $timeout
Request execution timeout

hash => $hash
Use hash as result

in => $in
Format for parsing input (string). One char is for one argument
('s' = string, 'n' = number, 'a' = array, '*' = anything (type
is determined automatically))

delete $space_name, $key, $opts, $cb->($result)
Execute delete request

$space_name
Tarantool space name.

$key
Select key (ARRAYREF or HASHREF).

$opts
HASHREF of additional options to the request

timeout => $timeout
Request execution timeout

hash => $hash
Use hash as result

index => $index
Index name or id to use

in => $in
Format for parsing input (string). One char is for one argument
('s' = string, 'n' = number, 'a' = array, '*' = anything (type
is determined automatically))

lua $function_name, $args, $opts, $cb->($result)
Execute call request (added for backward compatibility with
EV::Tarantool). See 'call' method.

stats $cb->($result)
Get Tarantool stats

Result
Returns a HASHREF, consisting of the following data:

arena

size
Arena allocated size

used
Arena used size

slabs
Slabs memory use

info

lsn Tarantool log sequence number

lut Last update time (current_time - box_info.replication.idle)

lag Replication lag

pid Process pid

uptime
Server's uptime

op Total operations count for each operation (select, insert, ...)

space
Tuples count in each space

RESULT
Success result
count => 1,
tuples => [
{
_t1 => 'tt1',
_t2 => 'tt2',
_t3 => 456,
_t4 => 5
}
],
status => 'ok',
code => 0,
sync => 5

count
Tuples count

tuples
Tuples themeselves

status
Status string ('ok')

code
Return code (0 if ok, else error code
())

sync
Request id

Error result
[undef, $error_msg, {
errstr => $error_msg,
status => 'error',
code => $error_code,
sync => 3
}]

errstr
Error string

status
Status string ('error')

code
Return code (0 if ok, else error code
())

sync
Request id

AUTHOR
igorcoding, , Mons Anderson,

BUGS
Please report any bugs or feature requests in

COPYRIGHT AND LICENSE
Copyright (C) 2015 by igorcoding

This program is released under the following license: GPL