Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages

Manual Reference Pages  -  MR::TARANTOOL::BOX::SINGLETON (3)

.ds Aq ’


MR::Tarantool::Box::Singleton - A singleton wrapper for MR::Tarantool::Box.

Provides connection-persistence and replica fallback. Please read "MR::Tarantool::Box manual" first.



    package Some::Tarantool::Box::Singleton;
    use MR::Tarantool::Box::Singleton;
    use base MR::Tarantool::Box::Singleton;

    BEGIN { # generates "TUPLE_$field_name" constants, and methods: FIELDS, FIELDS_HASH
        __PACKAGE__->mkfields(qw/ id f1 f2 f3 field4 f5 f6 f7 misc_string /); # applicable for DEFAULT_SPACE only

    sub SERVER   { Some::Config->GetBoxServer()   }
    sub REPLICAS { Some::Config->GetBoxReplicas() }

    sub DEFAULT_SPACE { 0 }

    sub SPACES   {[{
        space         => 0,
        indexes => [ {
            index_name   => primary_id,
            keys         => [TUPLE_id],
        }, {
            index_name   => secondary_f1f2,
            keys         => [TUPLE_f1, TUPLE_f2],
        }, ],
        format        => QqLlSsCc&,
        default_index => primary_id,
    }, {
        space         => 1,
        indexes => [ {
            index_name   => primary_id,
            keys         => [0],
        }, ],
        format        => &&&&,
        fields        => [qw/ string1 str2 s3 s4 /],




    BEGIN {

o Generates constants TUPLE_$fieldname => $fieldposition in $CLASS. Just Like if you say use constant TUPLE_id => 0, TUPLE_f1 => 1, ...;
o Generates $CLASS variable @fields containing field names, and a $CLASS method FIELDS returning @fields.
o Generates $CLASS variable %fields containing field names mapping to positions, and a $CLASS method FIELDS_HASH returning \%fields.
o These @fields are applied to the DEFAULT_SPACE, if fields were not set explicitly for that space.

        name             => "",                        # internal procedure name, in da box
        method_name      => "CallMyTestingStoredProcedure",            # will generate method named
        options          => { default => options },                    # MR::Tarantool::Box->Call \%options
        params           => [ qw{ P1 P2 P3 Param4 }],                  # names
        unpack_format    => "&LSC(L$)*",
        params_format    => [qw{ C S L a* }],
        params_default   => [ 1, 2, undef, the_default ],            # undefs are mandatory params
    my $data = $CLASS->CallMyTestingStoredProcedure(
        P1 => $val1,
        P2 => $val2,
        P3 => $val3,
        Param4 => $val3,
        { option => $value }, # optional
    ) or warn $CLASS->ErrorStr;

Declare a stored procedure. This generates $CLASS method $args{method_name} which calls Tarantool/Box procedure $args{name}, using $args{options} as default \%options for MR::Tarantool::Box->Call call. The generated method has the following prototype:

    $CLASS->CallMyTestingStoredProcedure( %sp_params, \%optional_options );

Parameters description:
<B>nameB> => $tarantool_box_sp_name The name of procedure in Tarantool/Box to call.
<B>method_nameB> => $class_method_name Class method name to generate.
<B>optionsB> => \%options Options to pass to MR::Taranatool::Box-Call|MR::Taranatool::Box/Call> method.
<B>paramsB> => \@names Procedure input parameters’ names
<B>params_defaultB> => \@defaults Procedure input parameters default values. Undefined or absent value makes its parameter mandatory.
<B>params_formatB> => \@format pack()-compatible format to pack input parameters. Must match params.
<B>unpack_formatB> => $format pack()-compatible format to unpack procedure output.
<B>B>%sp_params<B>B>: Name => $value pairs.
<B>B>%optional_options<B>B>: Options to pass to MR::Taranatool::Box-Call|MR::Taranatool::Box/Call> method. This overrides %options values key-by-key.
Configuration methods
<B>SERVERB> Must return a string of ip:port of master server.
<B>REPLICASB> Must return a comma separated string of ip:port pairs of replica servers (see is_replica). Server is chosen from the list randomly.
<B>MR_TARANTOOL_BOX_CLASSB> Must return name of the class implementing MR::Tarantool::Box interface, or it’s descendant.
<B>SPACESB>, <B>RAISEB>, <B>TIMEOUTB>, <B>SELECT_TIMEOUTB>, <B>RETRYB>, <B>SELECT_RETRYB>, <B>SOFT_RETRYB>, <B>DEBUGB> See corresponding arguments of MR::Tarantool::Box-new|MR::Tarantool::Box/new> method.
Add, Insert, Replace, UpdateMulti, Delete

These methods operate on SERVER only. See corresponding methods of MR::Tarantool::Box class.

Select, Call

These methods operate on SERVER at first, and then <B>mayB> try to query REPLICAS.

See corresponding methods of MR::Tarantool::Box class.

These methods have additional %options params:
<B>is_replicaB> => \$is_result_from_replica If this option is set, then if the query to SERVER fails, REPLICAS will be queried one-by-one until query succeeds or the list ends, and $is_result_from_replica will be set to true, no matter whether any query succeeds or not.
Error, ErrorStr

Return error code or description (see <MR::Tarantool::Box|MR::Tarantool::Box/Error>).


This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.




Search for    or go to Top of page |  Section 3 |  Main Index

perl v5.20.3 MR::TARANTOOL::BOX::SINGLETON (3) 2012-05-17

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.