The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Ping::PingServer;

use Net::Ping;
use Time::HiRes qw( time sleep );
use Jifty;

BEGIN { Jifty->new };

sub ping {
    my ($class, $host) = @_;
    my $ping = Net::Ping->new(tcp => 1);
    while (1) {
        my $old_time = time;
        my $alive = $ping->ping($host);
        my $new_time = time;

        Ping::Event::Pong->new(
            { host => $host, alive => ($alive ? ($new_time - $old_time + 0.001) : 0), time => $new_time }
        )->publish;
        sleep 1;
    }
    exit;
}

1;