Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MR::Tarantool::Box::SiUsertContributed Perl DoMR::Tarantool::Box::Singleton(3)

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

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

SYNOPSIS
	   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	/],
	   }]}

DESCRIPTION
   METHODS
       mkfields

	   BEGIN {
	       $CLASS->mkfields(@names);
	   }

       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.

       declare_stored_procedure

	   $CLASS->declare_stored_procedure(%args);

	   $CLASS->declare_stored_procedure(
	       name		=> "box.do.something",			      #	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'	],	      #	undef's	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:

       %args:
	   name	=> $tarantool_box_sp_name
	       The name	of procedure in	Tarantool/Box to call.

	   method_name => $class_method_name
	       Class method name to generate.

	   options => \%options
	       Options to pass to
	       MR::Taranatool::Box-Call|MR::Taranatool::Box/Call> method.

	   params => \@names
	       Procedure input parameters' names

	   params_default => \@defaults
	       Procedure input parameters default values. Undefined or absent
	       value makes its parameter mandatory.

	   params_format => \@format
	       "pack()"-compatible format to pack input	parameters. Must match
	       "params".

	   unpack_format => $format
	       "pack()"-compatible format to unpack procedure output.

       %sp_params:
	   "Name => $value" pairs.

       %optional_options:
	   Options to pass to
	   MR::Taranatool::Box-Call|MR::Taranatool::Box/Call> method.  This
	   overrides %options values key-by-key.

       Configuration methods

       SERVER
	   Must	return a string	of ip:port of master server.

       REPLICAS
	   Must	return a comma separated string	of ip:port pairs of replica
	   servers (see	"is_replica").	Server is chosen from the list
	   randomly.

       MR_TARANTOOL_BOX_CLASS
	   Must	return name of the class implementing MR::Tarantool::Box
	   interface, or it's descendant.

       SPACES, RAISE, TIMEOUT, SELECT_TIMEOUT, RETRY, SELECT_RETRY,
       SOFT_RETRY, DEBUG
	   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 may	try to query
       "REPLICAS".

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

       These methods have additional %options params:

       is_replica => \$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>).

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

SEE ALSO
       <http://tarantool.org>

       MR::Tarantool::Box

perl v5.24.1			  2012-05-17  MR::Tarantool::Box::Singleton(3)

NAME | SYNOPSIS | DESCRIPTION | LICENCE AND COPYRIGHT | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=MR::Tarantool::Box::Singleton&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help