NAME

Net::Curl::Simple::Async - perform Net::Curl requests asynchronously

SYNOPSIS

use Net::Curl::Simple;
use Net::Curl::Simple::Async qw(AnyEvent Select);

DESCRIPTION

This module is loaded by Net::Curl::Simple. The only reason to use it directly would be to force some event implementation.

use Irssi;
# Irssi backend would be picked
use Net::Curl::Simple::Async qw(AnyEvent POE);

FUNCTIONS

multi

Returns internal curl multi handle. You can use it to add bare Net::Curl::Easy objects. Net::Curl::Simple objects add themselves to this handle automatically.

warn_noasynchdns

Function used to warn about lack of AsynchDNS. You can overwrite it if you hate the warning.

{
    no warnings 'redefine';
    # don't warn at all
    *Net::Curl::Simple::Async::warn_noasynchdns = sub ($) { };
}

Lack of AsynchDNS support in libcurl can severely reduce Net::Curl::Simple::Async efficiency. You should not disable the warning, just replace it with a method more suitable in your application.

BACKENDS

Net::Curl::Simple::Async will check backends in this order:

CoroEV

Used with Coro only.

EV

Based on EV - an awesome and very efficient event library. Use it whenever you can.

Irssi

Will be used if Irssi has been loaded. Does not support join() method - it will issue a warning and won't block.

AnyEvent

Will be used if AnyEvent has been loaded. In most cases you will already have a looping mechanism on your own, but you can call Net::Curl::Simple->join if you don't need anything better.

POE

Used under POE, only if no other backend could be detected. Slooow, avoid it. If you're using POE try POE::Loop::EV.

Select

Direct loop implementation using perl's builtin select. Will be used if no other backend has been found. You must call join() to get anything done.

SEE ALSO

Net::Curl::Simple Net::Curl::Simple::UserAgent Net::Curl::Multi

COPYRIGHT

Copyright (c) 2011 Przemyslaw Iskra <sparky at pld-linux.org>.

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