BioPerl
view release on metacpan or search on metacpan
Bio/DB/WebDBSeqI.pm view on Meta::CPAN
$/ = "\n"; # reset to be safe;
close $dest_fh; #must explicitly close here, because the hard
#exits don't cloes them for us
}
else {
#CHILD
$| = 1;
my $resp = $self->ua->request($request,
sub { print $fetch $_[0] }
);
if( $resp->is_error ) {
$self->throw("WebDBSeqI Request Error:\n".$resp->as_string);
}
close $fetch; #must explicitly close here, because the hard exists
#don't close them for us
POSIX::_exit(0);
}
}
sub io {
my ($self,$io) = @_;
if(defined($io) || (! exists($self->{'_io'}))) {
$io = Bio::Root::IO->new() unless $io;
$self->{'_io'} = $io;
}
return $self->{'_io'};
}
=head2 delay
Title : delay
Usage : $secs = $self->delay([$secs])
Function: get/set number of seconds to delay between fetches
Returns : number of seconds to delay
Args : new value
NOTE: the default is to use the value specified by delay_policy().
This can be overridden by calling this method, or by passing the
-delay argument to new().
=cut
sub delay {
my $self = shift;
my $d = $self->{'_delay'};
$self->{'_delay'} = shift if @_;
$d;
}
=head2 delay_policy
Title : delay_policy
Usage : $secs = $self->delay_policy
Function: return number of seconds to delay between calls to remote db
Returns : number of seconds to delay
Args : none
NOTE: The default delay policy is 0s. Override in subclasses to
implement delays. The timer has only second resolution, so the delay
will actually be +/- 1s.
=cut
sub delay_policy {
my $self = shift;
return 0;
}
=head2 _sleep
Title : _sleep
Usage : $self->_sleep
Function: sleep for a number of seconds indicated by the delay policy
Returns : none
Args : none
NOTE: This method keeps track of the last time it was called and only
imposes a sleep if it was called more recently than the delay_policy()
allows.
=cut
sub _sleep {
my $self = shift;
my $last_invocation = $LAST_INVOCATION_TIME;
if (time - $LAST_INVOCATION_TIME < $self->delay) {
my $delay = $self->delay - (time - $LAST_INVOCATION_TIME);
warn "sleeping for $delay seconds\n" if $self->verbose > 0;
sleep $delay;
}
$LAST_INVOCATION_TIME = time;
}
=head2 mod_perl_api
Title : mod_perl_api
Usage : $version = self->mod_perl_api
Function: Returns API version of mod_perl being used based on set env. variables
Returns : mod_perl API version; if mod_perl isn't loaded, returns 0
Args : none
=cut
sub mod_perl_api {
my $self = shift;
my $v = $ENV{MOD_PERL} ?
( exists $ENV{MOD_PERL_API_VERSION} && $ENV{MOD_PERL_API_VERSION} >= 2 ) ?
2 :
1
: 0;
return $v;
}
1;
( run in 0.748 second using v1.01-cache-2.11-cpan-39bf76dae61 )