Egg::Plugin::Net::Ping - Net::Ping for Egg plugin.


Egg-Plugin-Net-Ping documentation Contained in the Egg-Plugin-Net-Ping distribution.

Index


Code Index:

NAME

Top

Egg::Plugin::Net::Ping - Net::Ping for Egg plugin.

SYNOPSIS

Top

  use Egg qw/ Net::Ping /;

  __PACKAGE__->egg_startup(
    ...
    .....
    plugin_net_ping => {
      protcol => 'tcp',
      timeout => 3,
      retry   => 1,
      wait    => 0.5,
      },
    );

  if ( $e->ping('192.168.1.1') ) {
    print " Ping was answered. !! ";
  } else {
    print " There is no answer to Ping. ";
  }

DESCRIPTION

Top

It is a plug-in to investigate while arbitrary PC is operating by Net::Ping.

CONFIGURATION

Top

Please set 'plugin_net_ping'.

protcol

They are the protocols such as tcp and udp.

Default is 'tcp'.

* I do not think that it operates well perhaps excluding tcp.

timeout

Time to wait for answer of ping.

Default is '3'.

retry

Frequency in which ping is done.

wait

Waiting time to doing next retry.

Default is '0.5'.

self_addr

Own host address.

METHODS

Top

ping ( [TARGET_HOST], [ARGS_HASH] )

Ping is sent to TARGET_HOST, and the succeeding frequency is returned.

ARGS_HASH overwrites initialization.

* When retry is set to five times or more, five is compulsorily set.

  $e->ping('192.168.1.111', retry => 5 );

SEE ALSO

Top

Egg::Release, Net::Ping,

AUTHOR

Top

Masatoshi Mizuno <lushe&64;cpan.org>

COPYRIGHT AND LICENSE

Top


Egg-Plugin-Net-Ping documentation Contained in the Egg-Plugin-Net-Ping distribution.

package Egg::Plugin::Net::Ping;
#
# Masatoshi Mizuno E<lt>lusheE<64>cpan.orgE<gt>
#
# $Id: Ping.pm 271 2008-02-24 06:52:22Z lushe $
#
use strict;
use warnings;
use Net::Ping;
use Carp qw/croak/;

our $VERSION= '3.01';

sub _setup {
	my($e)= @_;
	my $conf= $e->config->{plugin_net_ping} ||= {};
	$conf->{protcol} ||= 'tcp';
	$conf->{timeout} ||= 3;
	$conf->{retry}   ||= 1;
	$conf->{wait}    ||= 0.5;
	$e->next::method;
}
sub ping {
	my $e= shift;
	my $host= shift || croak q{ I want target host. };
	my %option= (
	  %{$e->config->{plugin_net_ping}},
	  %{ $_[1] ? {@_}: ($_[0] || {}) },
	  );
	$option{retry}= 5 if $option{retry}> 5;

	my $ping= Net::Ping->new($option{protcol});
	$ping->bind($option{self_addr}) if $option{self_addr};

	my($result, $count);
	for (1..$option{retry}) {
		++$result if $ping->ping($host, $option{timeout});
		++$count>= $option{retry} and last;
		select(undef, undef, undef, $option{wait});  ## no critic
	}

	$result || 0;
}

1;

__END__