package PITA::Guest::Server::Process; # A Process.pm compatible wrapper around PITA::Guest::Server use 5.008; use strict; use Process (); our $VERSION = '0.60'; our @ISA = 'Process'; ###################################################################### # Constructor and Accessors sub new { my $class = shift; my $self = bless { @_ }, $class; return $self; } sub pinged { $_[0]->{pinged}; } sub mirrored { $_[0]->{mirrored}; } sub uploaded { $_[0]->{uploaded}; } # Find a single named upload sub upload { my $self = shift; my $path = shift; foreach my $array ( @{$self->uploaded} ) { if ( $array->[0] eq $path ) { return $array->[1]; } } return undef; } ###################################################################### # Process Methods sub prepare { my $self = shift; # Create the server object passing capitalised params in require PITA::Guest::Server; $self->{server} = PITA::Guest::Server->new( map { $_ => $self->{$_} } grep { /^[A-Z]/ } keys %$self ); return 1; } sub run { my $self = shift; # Prepare to run POE require POE; POE->import; # Bootstrap the server and just hope for the best :) $self->{server}->start; POE::Kernel->run; return 1; } sub finish { my $self = shift; # Save the results and clean up the server if ( $self->{server} ) { $self->{pinged} = $self->{server}->pinged; $self->{mirrored} = $self->{server}->mirrored; $self->{uploaded} = $self->{server}->uploaded; delete $self->{server}; } return 1; } 1;