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.