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

FreeBSD Manual Pages


home | help
Sympa::Spindle(3Sympa)		 sympa 6.2.56		Sympa::Spindle(3Sympa)

       Sympa::Spindle -	Base class of subclasses to define Sympa workflows

	 package Sympa::Spindle::FOO;
	 use base qw(Sympa::Spindle);

	 use constant _distaff => 'Sympa::Spool::BAR';

	 sub _twist {
	     my	$self =	shift;
	     my	$object	= shift;

	     # Process object...

	     return 1;			      #	If succeeded.
	     return 0;			      #	If skipped.
	     return undef;		      #	If failed.
	     return ['Sympa::Spindle::BAZ'];  #	Splicing to the	other class(es).


       Sympa::Spindle is the base class	of subclasses to define	particular
       workflows of Sympa.

       A spindle class is a set	of features to process objects.	 If spin()
       method is called, it retrieves each object from source spool, processes
       it, at last passes altered object to appropriate	destination (another
       spool or	mailer), and removes it	as necessity.  Processing repeats
       until source spool is empty.

   Public methods
       new ( [ key => value, ... ] )
	   Constructor.	 Creates new instance of Sympa::Spindle.

       spin ( )
	   Instance method.  Fetches an	object and handle locking it from
	   source spool, processes them	calling	_twist() and repeats.  If
	   source spool	no longer gives	content, returns the number of
	   processed objects.

       add_stash ( =parameters... )
	   Instance method.  Adds arrayref of parameters to a storage for

       Instance	of Sympa::Spindle may have following properties.

	   Instance of source spool class _distaff() method returns.

	   Read/write.	At first this property is false.  Once it is set,
	   spin() finishes processing safely.

	   Instances of	spool classes _spools()	method returns.

	   Unix	time in	floating point number when processing of the latest
	   message by spin() began.  Introduced	by Sympa 6.2.13.

	   A reference to array	of added data by add_stash().

   Methods subclass should implement
       _distaff	( )
	   Class method, mandatory if you want to implement spin().  Returns
	   the name of source spool class.  source spool class must implement
	   new() and next().

       _init ( $state )
	   Instance method.  Additional	processing when	the spindle class is
	   instantiated	($state	is 0), before spin() processes next object in
	   source spool	($state	is 1) or after it processed object ($state is

	   If it returns false value, new() will return	"undef"	(when $state
	   is 0) or spin() will	terminate processing (when $state is 1).  By
	   default it always returns 1.

       _on_garbage ( $handle )
	   Instance method, overridable.  Executes process when	object could
	   not be deserialized (new() method of	object failed).	 By default,
	   quarantines object calling quarantine() method of source spool.

       _on_failure ( $message, $handle )
	   Instance method, overridable.  Executes process when	processing of
	   $message failed (_twist() returned "undef").	 By default,
	   quarantines object calling quarantine() method of source spool.

       _on_skip	( $message, $handle )
	   Instance method, overridable.  Executes process when	$message was
	   skipped (_twist() returned 0).  By default, simply unlocks object
	   calling close() method of $handle.

       _on_success ( $message, $handle )
	   Instance method, overridable.  Executes process when	processing of
	   $message succeeded (_twist()	returned true value).  By default,
	   removes object calling remove() method of source spool.

       _spools ( )
	   Class method.  If implemented, returns hashref with names of	spool
	   classes related to the spindle as values.

       _twist (	$message )
	   Instance method, mandatory.	Processes an object: Typically,
	   modifies object or creates another object and stores	it into
	   appropriate spool.


	       An object.


	   Status of processing: True value on success;	0 if processing
	   skipped; "undef" on failure.

	   As of Sympa 6.2.13, _twist()	may also return	the reference to array
	   including name(s) of	other classes: In this case spin() and twist()
	   will	call _twist() method of	given classes in order (not coercing
	   spindle object into them) and uses returned false value at first or
	   true	value at last.

       Sympa::Internals::Workflow, Sympa::Spool.

       Sympa::Spindle appeared on Sympa	6.2.10.

6.2.56				  2020-05-24		Sympa::Spindle(3Sympa)


Want to link to this manual page? Use this URL:

home | help