diff options
| author | David Leadbeater | 2014-06-15 19:18:39 +0100 |
|---|---|---|
| committer | David Leadbeater | 2014-06-15 19:18:39 +0100 |
| commit | c61a2a39dc12a7206cf05cc541271972b2cd039e (patch) | |
| tree | 35424becc60609efdc2a3680b4c8ed5802b13703 /scripts/sping.pl | |
| parent | 868ee3e860c57043a25e20aae0a51d15863088b0 (diff) | |
| download | scripts.irssi.org-c61a2a39dc12a7206cf05cc541271972b2cd039e.tar.bz2 | |
Update sping.pl to do hires timing
Diffstat (limited to 'scripts/sping.pl')
| -rw-r--r-- | scripts/sping.pl | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/scripts/sping.pl b/scripts/sping.pl index 49d8d78..4842454 100644 --- a/scripts/sping.pl +++ b/scripts/sping.pl @@ -3,33 +3,38 @@ use Irssi::Irc; use strict; use vars qw($VERSION %IRSSI); -$VERSION = "0.9"; +$VERSION = "1.0"; %IRSSI = ( - authors => "Maciek \'fahren\' Freudenheim", + authors => "Maciek \'fahren\' Freudenheim, David Leadbeater", contact => "fahren\@bochnia.pl", name => "Server Ping", description => "/SPING [server] - checks latency between current server and [server]", license => "GNU GPLv2 or later", - changed => "Fri Mar 15 15:09:42 CET 2002" + changed => "Sun 15 Jun 18:56:52 BST 2014", ); +# us. /SPING [server] + +use Time::HiRes qw(gettimeofday); + my %askping; sub cmd_sping { my ($target, $server, $winit) = @_; - + $target = $server->{address} unless $target; - $askping{$target} = time(); - $server->send_raw("PING $server->{address} $target"); + $askping{$target} = gettimeofday(); + # using nickname rather than server seems to work better here + $server->send_raw("PING $server->{nick} $target"); } sub event_pong { my ($server, $args, $sname) = @_; - - Irssi::signal_stop() if ($askping{$sname}); + return unless exists $askping{$sname}; - Irssi::print(">> $sname latency: " . (time() - $askping{$sname}) . "s"); - undef $askping{$sname}; + Irssi::signal_stop(); + Irssi::print(">> $sname latency: " . sprintf("%0.3f",gettimeofday() - $askping{$sname}) . "s"); + delete $askping{$sname}; } Irssi::signal_add("event pong", "event_pong"); |
