DR-Tnt
view release on metacpan or search on metacpan
lib/DR/Tnt/Proto.pm view on Meta::CPAN
}
sub insert($$$$) {
my ($sync, $schema_id, $space, $tuple) = @_;
$tuple = [ $tuple ] unless ref $tuple;
croak "Cant convert HashRef to tuple" if 'HASH' eq ref $tuple;
if (looks_like_number $space) {
return request
_mk_header(IPROTO_INSERT, $sync, $schema_id),
{
IPROTO_SPACE_ID, $space,
IPROTO_TUPLE, $tuple,
}
;
}
# HACK
_call_lua($sync, $schema_id, "box.space.$space:insert", $tuple);
}
sub replace($$$$) {
my ($sync, $schema_id, $space, $tuple) = @_;
$tuple = [ $tuple ] unless ref $tuple;
croak "Cant convert HashRef to tuple" if 'HASH' eq ref $tuple;
if (looks_like_number $space) {
return request
_mk_header(IPROTO_REPLACE, $sync, $schema_id),
{
IPROTO_SPACE_ID, $space,
IPROTO_TUPLE, $tuple,
}
;
}
# HACK
_call_lua($sync, $schema_id, "box.space.$space:replace", $tuple);
}
sub del($$$$) {
my ($sync, $schema_id, $space, $key) = @_;
$key = [ $key ] unless ref $key;
croak "Cant convert HashRef to key" if 'HASH' eq ref $key;
if (looks_like_number $space) {
return request
_mk_header(IPROTO_DELETE, $sync, $schema_id),
{
IPROTO_SPACE_ID, $space,
IPROTO_KEY, $key,
}
;
}
# HACK
_call_lua($sync, $schema_id, "box.space.$space:delete", $key);
}
sub update($$$$$) {
my ($sync, $schema_id, $space, $key, $ops) = @_;
croak 'Oplist must be Arrayref' unless 'ARRAY' eq ref $ops;
$key = [ $key ] unless ref $key;
croak "Cant convert HashRef to key" if 'HASH' eq ref $key;
if (looks_like_number $space) {
return request
_mk_header(IPROTO_UPDATE, $sync, $schema_id),
{
IPROTO_SPACE_ID, $space,
IPROTO_KEY, $key,
IPROTO_TUPLE, $ops,
}
;
}
# HACK
_call_lua($sync, $schema_id, "box.space.$space:update", [ $key, $ops ]);
}
sub select($$$$$;$$$) {
my ($sync, $schema_id, $space, $index, $key, $limit, $offset, $iterator) = @_;
$iterator = 'EQ' unless defined $iterator;
$offset ||= 0;
$limit = 0xFFFF_FFFF unless defined $limit;
$key = [ $key ] unless ref $key;
croak "Cant convert HashRef to key" if 'HASH' eq ref $key;
unless(looks_like_number $iterator) {
my $i = $iter{$iterator};
croak "Wrong iterator type: $iterator" unless defined $i;
$iterator = $i;
}
if (looks_like_number $space and looks_like_number $index) {
return request
_mk_header(IPROTO_SELECT, $sync, $schema_id),
{
IPROTO_KEY, $key,
IPROTO_SPACE_ID, $space,
IPROTO_OFFSET, $offset,
IPROTO_INDEX_ID, $index,
IPROTO_LIMIT, $limit,
IPROTO_ITERATOR, $iterator,
}
;
}
# HACK
_call_lua($sync, $schema_id, "box.space.$space.index.$index:select", [
$key,
{
offset => $offset,
limit => $limit,
iterator => $iterator
}
]
);
}
sub ping($$) {
( run in 0.532 second using v1.01-cache-2.11-cpan-39bf76dae61 )