Claes Jakobsson > VS-RuleEngine > VS::RuleEngine::Runloop

Download:
VS-RuleEngine-0.09.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
View/Report Bugs
Source  

NAME ^

VS::RuleEngine::Runloop - Runs engine(s)

SYNOPSIS ^

  use VS::RuleEngine::Runloop;
  
  my $engine1 = MyApp::Engine->get_engine();
  my $engine2 = MyApp::Engine->get_another_engine();
  
  my $runloop = VS::RuleEngine::Runloop->new();
  $runloop->add_engine($engine1);
  $runloop->add_engine($engine2);

  # Run the two engines until there's no more processing
  # to be done in either of them
  $runloop->run();

DESCRIPTION ^

This class converts engine descriptions (VS::RuleEngine::Engine-instances) into something runnable and executes them.

If multiple engines are defined in a single runloop execution will continue until no engines have anything ore to process. Engines that report they are done processing are removed from the runloop.

INTERFACE ^

CLASS METHODS

new

Creates a new runloop instance.

INSTANCE METHODS

add_engine ( ENGINE [, GLOBALS] )

Adds an engine to the runloop. An optional VS::RuleEngine::Data instance can be passed as global data for the engine. If omitted a empty VS::RuleEngine::Data instance will be created and used as global.

init

Initializes the runloop. Must be called before step in order for the runloop to work. It called automaticly by run.

step

Performs one iteration in the runloop. Returns the number of engines that are still in the runloop. When there is no more work to be done it returns 0.

run

Runs the engine until there is no more work to perform.

syntax highlighting: