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
- Host: GitHub
- URL: https://github.com/igorcoding/ev-tarantool16
- Owner: igorcoding
- Created: 2015-02-04T11:58:30.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2018-03-25T20:00:52.000Z (almost 8 years ago)
- Last Synced: 2025-04-11T22:45:55.814Z (10 months ago)
- Topics: async-programming, database-connector, high-performance, libev, perl, tarantool
- Language: C
- Homepage: https://packagecloud.io/igorcoding/tarantoolcontrib
- Size: 626 KB
- Stars: 11
- Watchers: 3
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README
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