High performance low-level EV based Tarantool 1.6+ client
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bench
lib/EV
libs
provision
rpm
t
temp
xstarantool
.gitignore
.gitmodules
.travis.yml
MANIFEST
MANIFEST.SKIP
META.json
META.yml
Makefile.PL
README
README.pod
Tarantool16.xs
Vagrantfile
build.sh
makeall.sh
ppport.h

README.pod

Build Status

master Travis CI Build status (master)

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 (https://github.com/tarantool/tarantool/blob/master/src/box/errcode.h))

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 (https://github.com/tarantool/tarantool/blob/master/src/box/errcode.h))

sync

Request id

AUTHOR

igorcoding, <igorcoding@gmail.com>, Mons Anderson, <mons@cpan.org>

BUGS

Please report any bugs or feature requests in https://github.com/igorcoding/EV-Tarantool16/issues

COPYRIGHT AND LICENSE

Copyright (C) 2015 by igorcoding

This program is released under the following license: GPL