NAME
   AnyEvent::Connection - Base class for tcp connectful clients

SYNOPSIS
       package MyTCPClient;
       use base 'AnyEvent::Connection';

       package main;
       my $client = MyTCPClient->new(
       host => 'localhost',
       port => 12345,
       );
       $client->reg_cb(
       connected => sub {
           my ($client,$connection,$host,$port) = @_;
           # ...
           $client->after(
           $interval, sub {
               # Called after interval, if connection still alive
           }
           );
       }
       connfail = sub {
           my ($client,$reason) = @_;
           # ...
       },
       disconnect => sub {
           my ($client,$reason) = @_;
       },
       error => sub {
           my ($client,$error) = @_;
           # Called in error conditions for callbackless methods
       },
       );
       $client->connect;

EVENTS
   connected ($connobject, $host, $port)
       Called when client get connected.

   connfail
       Called, when client fails to connect

   disconnect
       Called whenever client disconnects

   error
       Called in error conditions for callbackless methods (for ex: when
       calling push_write on non-connected client)

OPTIONS
   host
       Host to connect to

   port
       Port to connect to

   timeout [ = 3 ]
       Connect/read/write timeout in seconds

   reconnect [ = 1 ]
       If true, automatically reconnect after disconnect/connfail after
       delay $reconnect seconds

   rawcon [ = AnyEvent::Connection::Raw ]
       Class that implements low-level connection

OPERATION METHODS
   new Cleates connection object (see OPTIONS)

   connect
       Begin connection

   disconnect ($reason)
       Close current connection. reason is optional

   reconnect
       Close current connection and establish a new one

   after($interval, $cb->())
       Helper method. AE::timer(after), associated with current connection

       Will be destroyed if connection is destroyed, so no timer invocation
       after connection destruction.

   periodic($interval, $cb->())
       Helper method. AE::timer(periodic), associated with current
       connection

       Will be destroyed if connection is destroyed, so no timer invocation
       after connection destruction.

   periodic_stop()
       If called within periodic callback, periodic will be stopped.

       my $count;
       $client->periodic(1,sub {
           $client->periodic_stop if ++$count > 10;
       });

       # callback will be called only 10 times;

   destroy
       Close connection, destroy all associated objects and timers, clean
       self

CONNECT METHODS
   When connected, there are some methods, that proxied to raw connection
   or to AE::Handle

   push_write
       See AE::Handle::push_write

   push_read
       See AE::Handle::push_read

   unshift_read
       See AE::Handle::unshift_read

   say Same as push_write + newline

   reply
       Same as push_write + newline

   For next methods there is a feature. Callback will be called in any way,
   either by successful processing or by error or object destruction

   recv($bytes, %args, cb => $cb->())
       Similar to

       $fh->push_read(chunk => $bytes, $cb->());

   command($data, %args, cb => $cb->());
       Similar to

       $fh->push_write($data);
       $fh->push_read(line => $cb->());

AUTHOR
   Mons Anderson, "<mons at cpan.org>"

BUGS
   Please report any bugs or feature requests to "bug-anyevent-connection
   at rt.cpan.org", or through the web interface at
   <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=AnyEvent-Connection>. I
   will be notified, and then you'll automatically be notified of progress
   on your bug as I make changes.

SUPPORT
   You can find documentation for this module with the perldoc command.

       perldoc AnyEvent::Connection

   You can also look for information at:

   * RT: CPAN's request tracker
       <http://rt.cpan.org/NoAuth/Bugs.html?Dist=AnyEvent-Connection>

   * AnnoCPAN: Annotated CPAN documentation
       <http://annocpan.org/dist/AnyEvent-Connection>

   * CPAN Ratings
       <http://cpanratings.perl.org/d/AnyEvent-Connection>

   * Search CPAN
       <http://search.cpan.org/dist/AnyEvent-Connection/>

ACKNOWLEDGEMENTS
COPYRIGHT & LICENSE
   Copyright 2009 Mons Anderson, all rights reserved.

   This program is free software; you can redistribute it and/or modify it
   under the same terms as Perl itself.