AnyEvent-Net-Curl-Queued

 view release on metacpan or  search on metacpan

eg/Gauge/AnyEvent_Curl_Multi.pm  view on Meta::CPAN

package Gauge::AnyEvent_Curl_Multi;
use strict;
use utf8;
use warnings qw(all);

use Any::Moose;
with qw(Gauge::Role);

use AnyEvent;
use AnyEvent::Curl::Multi;
use HTTP::Request::Common qw(GET);
use WWW::Curl::Easy;

sub run {
    my ($self) = @_;

    my $multi = AnyEvent::Curl::Multi->new;
    $multi->max_concurrency($self->parallel);
    $multi->reg_cb(
        response => sub {
            my ($client, $request, $response, $stats) = @_;
        }
    );
    $multi->reg_cb(
        error => sub {
            my ($client, $request, $errmsg, $stats) = @_;
        }
    );
    my @multi = map {
        sub {
            my $req = $multi->request(shift);

            # Disable compression
            $req->{easy_h}->setopt(CURLOPT_ENCODING, q(identity));

            # UA string
            $req->{easy_h}->setopt(CURLOPT_USERAGENT, qq(AnyEvent::Curl::Multi/$AnyEvent::Curl::Multi::VERSION));

            return $req;
        }->(GET($_))
    } @{$self->queue};
    $_->cv->recv for @multi;

    return;
}

1;



( run in 0.477 second using v1.01-cache-2.11-cpan-39bf76dae61 )