GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  NET::XMPP2::EXT::PING (3)

.ds Aq ’

NAME

Net::XMPP2::Ext::Ping - Implementation of XMPP Ping XEP-0199

CONTENTS

SYNOPSIS



   use Net::XMPP2::Ext::Ping;

   my $con = Net::XMPP2::IM::Connection->new (...);
   $con->add_extension (my $ping = Net::XMPP2::Ext::Ping->new);

   # this enables auto-timeout of a connection if it didnt answer
   # within 120 seconds to a ping with a reply
   $ping->enable_timeout ($con, 120);

   my $cl = Net::XMPP2::Client->new (...);
   $cl->add_extension (my $ping = Net::XMPP2::Ext::Ping->new);

   # this enables auto-timeout of newly created connections
   $ping->auto_timeout (120);

   $ping->ping ($con, ping_dest@server.tld, 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

<B>new (%args)B> Creates a new ping handle.
<B>auto_timeout ($timeout)B> 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 Net::XMPP2::Client (see also SYNOPSIS above).

<B>enable_timeout ($con, B>$timeout<B>)B> This enables a periodical ping on the connection $con. $timeout must be the seconds that the ping intervals last.

If the server which is connected via $con didn’t respond within $timeout seconds the connection $con will be disconnected.

Please note that there already is a basic timeout mechanism for dead TCP connections in Net::XMPP2::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.

<B>ping ($con, B>$dest<B>, B>$cb<B>, B>$timeout<B>)B> This method sends a ping request to $dest via the Net::XMPP2::Connection in $con. If $dest is undefined the ping will be sent to the connected server. $cb will be called when either the ping timeouts, an error occurs or the ping result was received. $timeout is an optional timeout for the ping request, if $timeout is not given the default IQ timeout for the connection is the relevant timeout.

The first argument to $cb will 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 $cb will be either undef if no error occured or a Net::XMPP2::Error::IQ error object.

<B>ignore_pings ($bool)B> 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 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.

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 NET::XMPP2::EXT::PING (3) 2008-04-06

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.