summaryrefslogtreecommitdiffstats
path: root/scripts/sping.pl
diff options
context:
space:
mode:
authorDavid Leadbeater2014-06-15 19:18:39 +0100
committerDavid Leadbeater2014-06-15 19:18:39 +0100
commitc61a2a39dc12a7206cf05cc541271972b2cd039e (patch)
tree35424becc60609efdc2a3680b4c8ed5802b13703 /scripts/sping.pl
parent868ee3e860c57043a25e20aae0a51d15863088b0 (diff)
downloadscripts.irssi.org-c61a2a39dc12a7206cf05cc541271972b2cd039e.tar.bz2
Update sping.pl to do hires timing
Diffstat (limited to 'scripts/sping.pl')
-rw-r--r--scripts/sping.pl25
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");