NAME
Mojo::IOLoop - IO Loop
SYNOPSIS
use Mojo::IOLoop;
# Create loop and listen on port 3000
my $loop = Mojo::IOLoop->new;
$loop->listen(port => 3000);
# Accept connections
$loop->accept_cb(sub {
my ($self, $id) = @_;
# Incoming data
$self->read_cb($id => sub {
my ($self, $id, $chunk) = @_;
# Got some data, time to write
$self->writing($id);
});
# Ready to write
$self->write_cb($id => sub {
my ($self, $id) = @_;
# Back to reading only
$self->not_writing($id);
# The loop will take care of buffering for us
return 'HTTP/1.1 200 OK';
});
});
# Start and stop loop
$loop->start;
$loop->stop;
DESCRIPTION
Mojo::IOLoop is a general purpose IO loop for TCP clients and servers, easy to subclass and extend.
ATTRIBUTES
Mojo::IOLoop implements the following attributes.
accept_cb
my $cb = $loop->accept_cb;
$loop = $loop->accept_cb(sub { ... });
accept_timeout
my $timeout = $loop->accept_timeout;
$loop = $loop->accept_timeout(5);
clients
my $clients = $loop->clients;
$loop = $loop->clients(25);
connect_timeout
my $timeout = $loop->connect_timeout;
$loop = $loop->connect_timeout(5);
connecting
my $connecting = $loop->connecting;
$loop = $loop->connecting(25);
lock_cb
my $cb = $loop->lock_cb;
$loop = $loop->lock_cb(sub { ... });
max_clients
my $max = $loop->max_clients;
$loop = $loop->max_clients(1000);
servers
my $servers = $loop->servers;
$loop = $loop->servers(25);
unlock_cb
my $cb = $loop->unlock_cb;
$loop = $loop->unlock_cb(sub { ... });
timeout
my $timeout = $loop->timeout;
$loop = $loop->timeout(5);
METHODS
Mojo::IOLoop inherits all methods from Mojo::Base and implements the following new ones.
new
my $loop = Mojo::IOLoop->new;
connect
my $c = $loop->connect(
address => '127.0.0.1',
port => 3000,
cb => sub {...}
);
my $c = $loop->connect({
address => '127.0.0.1',
port => 3000,
cb => sub {...}
});
connection_timeout
my $timeout = $loop->connection_timeout($id);
$loop = $loop->connection_timeout($id => 45);
drop
$loop = $loop->drop($id);
error_cb
$loop = $loop->error_cb($id => sub { ... });
finish
$loop = $loop->finish($id);
hup_cb
$loop = $loop->hup_cb($id => sub { ... });
listen
$loop->listen(port => 3000);
$loop->listen({port => 3000});
local_info
my $info = $loop->local_info($id);
not_writing
$loop->not_writing($id);
read_cb
$loop = $loop->read_cb($id => sub { ... });
remote_info
my $info = $loop->remote_info($id);
start
$loop->start;
stop
$loop->stop;
write_cb
$loop = $loop->write_cb($id => sub { ... });
writing
$loop->writing($id);