NAME
AnyEvent::XMPP::Ext::Ping - Implementation of XMPP Ping XEP-0199
SYNOPSIS
use AnyEvent::XMPP::Ext::Ping;my $con = AnyEvent::XMPP::IM::Connection->new (...);$con->add_extension (my $ping = AnyEvent::XMPP::Ext::Ping->new);# this enables auto-timeout of a connection if it didn't answer# within 120 seconds to a ping with a reply$ping->enable_timeout ($con, 120);my $cl = AnyEvent::XMPP::Client->new (...);$cl->add_extension (my $ping = AnyEvent::XMPP::Ext::Ping->new);# this enables auto-timeout of newly created connections$ping->auto_timeout (120);$ping->ping ($con, '[email protected]', sub {my ($time, $error) = @_;if ($error) {# we got an error}# $time is a float (seconds) of the rtt if you got Time::HiRes});
DESCRIPTION
This extension implements XEP-0199: XMPP Ping. It allows you to define a automatic ping timeouter that will disconnect dead connections (which didn't reply to a ping after N seconds). See also the documentation of the "enable_timeout" method below.
It also allows you to send pings to any XMPP entity you like and will measure the time it took if you got Time::HiRes.
METHODS
- new (%args)
-
Creates a new ping handle.
- auto_timeout ($timeout)
-
This method enables automatic connection timeout of new connections. It calls
"enable_timeout"(see below) for every new connection that was connected and emitted a"stream_ready"event.This is useful if you want connections that have this extension automatically timeouted. In particular this is useful with modules like AnyEvent::XMPP::Client (see also SYNOPSIS above).
- enable_timeout ($con, $timeout)
-
This enables a periodical ping on the connection
$con.$timeoutmust be the seconds that the ping intervals last.If the server which is connected via
$condidn't respond within$timeoutseconds the connection$conwill be disconnected.Please note that there already is a basic timeout mechanism for dead TCP connections in AnyEvent::XMPP::Connection, see also the
"whitespace_ping_interval"configuration variable for a connection there. It then will depend on TCP timeouts to disconnect the connection.Use
"enable_timeout"and"auto_timeout"only if you really feel like you need an explicit timeout for your connections.
- ping ($con, $dest, $cb, $timeout)
-
This method sends a ping request to
$destvia the AnyEvent::XMPP::Connection in$con. If$destis undefined the ping will be sent to the connected server.$cbwill be called when either the ping timeouts, an error occurs or the ping result was received.$timeoutis an optional timeout for the ping request, if$timeoutis not given the default IQ timeout for the connection is the relevant timeout.The first argument to
$cbwill be the seconds of the round trip time for that request (If you have Time::HiRes). If you don't have Time::HiRes installed the first argument will be undef.The second argument to
$cbwill be either undef if no error occured or a AnyEvent::XMPP::Error::IQ error object.
- ignore_pings ($bool)
-
This method is mostly for testing, it tells this extension to ignore all ping requests and will prevent any response from being sent.
AUTHOR
Robin Redeker, "<elmex at ta-sa.org>", JID: "<elmex at jabber.org>"
COPYRIGHT & LICENSE
Copyright 2007, 2008 Robin Redeker, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.