view release on metacpan or search on metacpan
lib/AC/MrGamoo/Client.pm view on Meta::CPAN
sub new {
my $class = shift;
my $from = shift; # file | text
my $src = shift;
my $cfg = shift;
my $host = hostname();
my $user = getpwuid($<);
my $trace = "$user/$$\@$host:" . ($from eq 'file' ? $src : 'text');
my $me = bless {
traceinfo => $trace,
}, $class;
$me->{fdebug} = $cfg->{debug} ? sub{ print STDERR "@_\n" } : sub {};
# compile job
my $mr = AC::MrGamoo::Submit::Compile->new( $from => $src );
$me->{program} = $mr;
# merge job %config section with passed in config
$mr->add_config($cfg);
lib/AC/MrGamoo/D.pm view on Meta::CPAN
sub new {
my $class = shift;
my %p = @_;
AC::MrGamoo::MySelf->customize( $p{class_myself} );
AC::MrGamoo::FileList->customize( $p{class_filelist} );
AC::MrGamoo::ReadInput->customize( $p{class_readinput} );
# ...
return bless \$class, $class;
}
sub daemon {
my $me = shift;
my $cfile = shift;
my $opt = shift; # foreground, debugall, persistent_id, argv
die "no config file specified\n" unless $cfile;
# configure
lib/AC/MrGamoo/EUConsole.pm view on Meta::CPAN
use AC::MrGamoo::Protocol;
use Socket;
use strict;
sub new {
my $class = shift;
my $jobid = shift;
my $console = shift; # ipaddr:port
return bless {}, $class unless $console;
# open socket to end-user console session, if requested
my($addr, $port) = split /:/, $console;
my $ip = inet_aton($addr);
my $fd;
my $i = socket($fd, PF_INET, SOCK_DGRAM, 0);
$i = connect( $fd, sockaddr_in($port, $ip) );
unless( $i ){
verbose("cannot connect to user console: $!");
return;
}
return bless {
fd => $fd,
jobid => $jobid,
msgid => (time() & 0xFFFF),
}, $class;
}
sub send_msg {
my $me = shift;
my $type = shift;
my $msg = shift;
lib/AC/MrGamoo/Iter/Array.pm view on Meta::CPAN
package AC::MrGamoo::Iter::Array;
use AC::MrGamoo::Iter;
our @ISA = 'AC::MrGamoo::Iter';
use strict;
sub new {
my $class = shift;
my $array = shift; # [ [key, data], ...]
return bless {
src => $array,
}, $class;
}
sub _nextrow {
my $me = shift;
if( $me->{buf} ){
my $r = $me->{buf};
delete $me->{buf};
lib/AC/MrGamoo/Iter/File.pm view on Meta::CPAN
use AC::MrGamoo::Iter;
use JSON;
our @ISA = 'AC::MrGamoo::Iter';
use strict;
sub new {
my $class = shift;
my $fd = shift;
my $pf = shift;
return bless {
fd => $fd,
progress => $pf,
}, $class;
}
sub _nextrow {
my $me = shift;
if( $me->{buf} ){
my $r = $me->{buf};
lib/AC/MrGamoo/Job.pm view on Meta::CPAN
freq => 2,
func => \&periodic,
);
################################################################
sub new {
my $class = shift;
# %{ APCMRMJobCreate }
my $me = bless {
request => { @_ },
phase_no => -1,
file_info => {},
tmp_file => [],
server_info => {},
task_running => {},
task_pending => {},
xfer_running => {},
xfer_pending => {},
request_running => {},
lib/AC/MrGamoo/Job/Plan.pm view on Meta::CPAN
for my $ts (@task){
for my $t ( @{$ts->{task}} ){
$task{ $t->{id} } = $t;
}
}
# debug("plan: " . dumper( \@task ));
debug("infiles: " . @$files . ", precopy: " . @$plancopy . ", maps: " . @$planmap . ", reduces: $nr x $nrp");
return bless {
nserver => scalar(@$servers),
nreduce => $nr,
copying => $plancopy,
phases => \@phase,
taskplan => \@task,
redbin => $redbin,
taskidx => \%task,
}, $class;
}
lib/AC/MrGamoo/Job/Request.pm view on Meta::CPAN
package AC::MrGamoo::Job::Request;
use AC::MrGamoo::Debug 'job_request';
use strict;
our @ISA = 'AC::MrGamoo::Job::Action';
sub new {
my $class = shift;
my $job = shift;
my $me = bless { @_ }, $class;
$job->{request_pending}{$me->{id}} = $me;
return $me;
}
sub start {
my $me = shift;
my $job = shift;
debug("starting request $me->{info}");
lib/AC/MrGamoo/Job/Task.pm view on Meta::CPAN
sub new {
my $class = shift;
my $job = shift;
my $info = shift;
my $server = shift;
my $id = unique();
my $me = bless {
id => $id,
info => $info,
server => $server,
created => time(),
};
$job->{task_pending}{$id} = $me;
debug(" => pending task $info->{id} => $id on $server");
lib/AC/MrGamoo/Job/TaskInfo.pm view on Meta::CPAN
use strict;
our @ISA = 'AC::MrGamoo::Job::Info';
my $MAXRETRY = 2;
sub new {
my $class = shift;
my $job = shift;
return bless { @_ }, $class;
}
sub pend {
my $me = shift;
my $job = shift;
return if $me->{replaced};
return if $me->{finished};
# create instance, put on pending queue
lib/AC/MrGamoo/Job/Xfer.pm view on Meta::CPAN
sub new {
my $class = shift;
my $job = shift;
my $info = shift;
my $server = shift;
my $id = unique();
my $me = bless {
id => $id,
info => $info,
server => $server,
created => $^T,
};
$job->{xfer_pending}{$id} = $me;
debug("pending xfer $info->{id} => $id on $server");
lib/AC/MrGamoo/Job/XferInfo.pm view on Meta::CPAN
our @ISA = 'AC::MrGamoo::Job::Info';
my $MAXRETRY = 1;
# id, filename, dstname, size, location, dst
sub new {
my $class = shift;
my $job = shift;
my $me = bless { @_ }, $class;
$me->{server} = $me->{dst};
return $me;
}
sub pend {
my $me = shift;
my $job = shift;
# create instances, put on pending queue
lib/AC/MrGamoo/OutFile.pm view on Meta::CPAN
$max_open = `sh -c "ulimit -n"`;
$max_open = 255 if $^O eq 'solaris' && $max_open > 255;
$max_open -= 32; # room for other fds
sub new {
my $class = shift;
my $file = shift;
my $gz = shift;
my $me = bless {
file => $file,
gz => $gz,
}, $class;
$all{$file} = $me;
# open as many as we can up front
$me->_open() if $currently_open < $max_open;
return $me;
}
lib/AC/MrGamoo/Retry.pm view on Meta::CPAN
package AC::MrGamoo::Retry;
our @ISA = 'AC::DC::Callback';
use AC::MrGamoo::Debug 'retry';
use strict;
# newobj, newargs, tryeach
sub new {
my $class = shift;
my $me = bless { @_, tries => 0 }, $class;
$me->{tryeach} ||= [];
$me->{maxtries} ||= @{ $me->{tryeach} };
return $me;
}
sub start {
my $me = shift;
$me->_try();
lib/AC/MrGamoo/Submit/Compile.pm view on Meta::CPAN
my %BLOCK = (
init => 'simple',
cleanup => 'simple',
attr => 'config',
);
sub new {
my $class = shift;
my $me = bless {
@_,
# file | text
}, $class;
if( $me->{file} ){
open(my $fd, $me->{file}) || $me->_die("cannot open file: $!");
local $/ = undef;
$me->{text} = <$fd>;
close $fd;
}
lib/AC/MrGamoo/Submit/Compile/Block.pm view on Meta::CPAN
# $Id: Block.pm,v 1.1 2010/11/01 18:42:00 jaw Exp $
package AC::MrGamoo::Submit::Compile::Block;
use strict;
my $UCLASS = 'AC::MrGamoo::User';
sub new {
my $class = shift;
return bless {}, $class;
}
sub compile {
my $me = shift;
my $inc = shift;
my $prog = "{\n";
my $class = $me->{attr}{in_package} || $UCLASS;
$prog .= "package $class;\n";
lib/AC/MrGamoo/Submit/Request.pm view on Meta::CPAN
use AC::Misc;
use AC::Daemon;
use AC::ISOTime;
use strict;
sub new {
my $class = shift;
my $c = shift;
my $me = bless {
file => $c->{file},
config => $c->{content}{config},
initres => $c->{initres},
@_,
}, $class;
$AC::MrGamoo::User::R = $me;
return $me;
}
lib/AC/MrGamoo/Submit/TieIO.pm view on Meta::CPAN
#
# $Id: TieIO.pm,v 1.1 2010/11/01 18:42:00 jaw Exp $
package AC::MrGamoo::Submit::TieIO;
use strict;
sub TIEHANDLE {
my $class = shift;
my $func = shift;
return bless{ func => $func }, $class;
}
sub PRINT {
my $me = shift;
return unless $me->{func};
$me->{func}->( @_ );
}
sub PRINTF {
lib/AC/MrGamoo/Task.pm view on Meta::CPAN
freq => 5,
func => \&periodic,
);
################################################################
sub new {
my $class = shift;
# %ACPMRMTaskCreate
my $me = bless {
request => { @_ },
}, $class;
debug("new task $me->{request}{taskid}");
my $task = $me->{request}{taskid};
return problem("cannot create task: no task id") unless $task;
if( $REGISTRY{$task} ){
verbose("ignoring duplicate request task $task");
# will cause a 200 OK, so the requestor will not retry
return $REGISTRY{$task};