NAME
AI::Evolve::Befunge::Migrator - connection to migration server
SYNOPSIS
my $migrator = AI::Evolve::Befunge::Migrator->new(Local => $socket);
$migrator->spin() while $migrator->alive();
DESCRIPTION
Maintains a connection to the migration server, migrationd. This module is meant to run in a child process, which will die when the Local socket is closed.
It provides a non-blocking, fault tolerant adaptation layer between migrationd (which may be somewhere across the internet) and the AI::Evolve::Befunge population object (which spends most of its time evolving critters, and only occasionally polls us).
CONSTRUCTOR
new
my $migrator = AI::Evolve::Befunge::Migrator->new(Local => $socket);
Construct a new Migrator object.
The Local parameter is mandatory, it is the socket (typically a UNIX domain socket) used to pass critters to and from the parent process.
Note that you probably don't want to call this directly... in most cases you should call spawn_migrator, see below.
spawn_migrator
my $socket = spawn_migrator($config);
Spawn off an external migration child process. This process will live as long as the returned socket lives; it will die when the socket is closed. See AI::Evolve::Befunge::Migrator for implementation details.
METHODS
spin
$migrator->spin();
This is the main control component of this module. It looks for incoming events and responds to them.
spin_reads
$migrator->spin_reads();
Handle read-related events. This method will delay for up to 2 seconds if no reading is necessary.
spin_writes
$migrator->spin_writes();
Handle write-related events. This method will not block.
spin_exceptions
$migrator->spin_exceptions();
Handle exception-related events. This method will not block.
alive
exit unless $migrator->alive();
Returns true while migrator still wants to live.
try_connect
$migrator->try_connect();
Try to establish a new connection to migrationd.