Acme-Parataxis
view release on metacpan or search on metacpan
```perl
# Example: A cooperative HTTP::Tiny subclass
{
package My::HTTP;
use parent 'HTTP::Tiny';
sub _open_handle {
my ($self, $request, $scheme, $host, $port, $peer) = @_;
return My::HTTP::Handle->new(
timeout => $self->{timeout},
keep_alive => $self->{keep_alive},
keep_alive_timeout => $self->{keep_alive_timeout}
)->connect($scheme, $host, $port, $peer);
}
sub request {
my ($self, $method, $url, $args) = @_;
my %new_args = %{ $args // {} };
my $orig_cb = $new_args{data_callback};
my $content = '';
$new_args{data_callback} = sub {
my ($data, $response) = @_;
if ($orig_cb) { return $orig_cb->($data, $response) }
eg/http_tiny.pl view on Meta::CPAN
use blib;
use Acme::Parataxis qw[:all];
$|++;
#
package My::HTTP {
use parent 'HTTP::Tiny';
sub _open_handle( $self, $request, $scheme, $host, $port, $peer ) {
My::HTTP::Handle->new(
timeout => $self->{timeout},
keep_alive => $self->{keep_alive},
keep_alive_timeout => $self->{keep_alive_timeout},
SSL_options => $self->{SSL_options},
verify_SSL => $self->{verify_SSL}
)->connect( $scheme, $host, $port, $peer );
}
# Override request to ensure we capture content correctly in non-blocking mode
sub request ( $self, $method, $url, $args ) {
$method //= 'GET';
my %new_args = %{ $args // {} };
my $orig_cb = $new_args{data_callback};
lib/Acme/Parataxis.pod view on Meta::CPAN
underlying I/O is ready.
# Example: A cooperative HTTP::Tiny subclass
{
package My::HTTP;
use parent 'HTTP::Tiny';
sub _open_handle {
my ($self, $request, $scheme, $host, $port, $peer) = @_;
return My::HTTP::Handle->new(
timeout => $self->{timeout},
keep_alive => $self->{keep_alive},
keep_alive_timeout => $self->{keep_alive_timeout}
)->connect($scheme, $host, $port, $peer);
}
sub request {
my ($self, $method, $url, $args) = @_;
my %new_args = %{ $args // {} };
my $orig_cb = $new_args{data_callback};
my $content = '';
$new_args{data_callback} = sub {
my ($data, $response) = @_;
if ($orig_cb) { return $orig_cb->($data, $response) }
t/007_data_types.t view on Meta::CPAN
subtest 'Returning object from fiber' => sub {
my $res;
{
my $fiber = Acme::Parataxis->new( code => sub { Local::Destructor->new('B') } );
$res = $fiber->call();
isa_ok $res, ['Local::Destructor'], 'Fiber returned object';
# Fiber is technically done, but we manually flag it to ensure
# the Perl-side wrapper drops its internal references.
$fiber->is_done();
is $DESTROYED, 0, 'Object still alive in parent var';
}
$res = undef;
# Force a stack cycle to clear the mortal reference returned by the XS call
flush_stack();
is $DESTROYED, 1, 'Object destroyed in parent after release';
};
};
#
done_testing();
t/013_real_http.t view on Meta::CPAN
package Acme::Parataxis::Test::RealHTTP;
use parent 'HTTP::Tiny';
sub _open_handle {
my ( $self, $request, $scheme, $host, $port, $peer ) = @_;
my $handle = Acme::Parataxis::Test::RealHTTP::Handle->new(
timeout => $self->{timeout},
SSL_options => $self->{SSL_options},
verify_SSL => $self->{verify_SSL},
keep_alive => $self->{keep_alive},
keep_alive_timeout => $self->{keep_alive_timeout},
);
return $handle->connect( $scheme, $host, $port, $peer );
}
sub request {
my ( $self, $method, $url, $args ) = @_;
no warnings 'uninitialized';
$method //= 'GET';
my %new_args = %{ $args // {} };
my $orig_cb = $new_args{data_callback};
t/014_http_pool.t view on Meta::CPAN
package Acme::Parataxis::Test::PoolHTTP;
use parent 'HTTP::Tiny';
sub _open_handle {
my ( $self, $request, $scheme, $host, $port, $peer ) = @_;
my $handle = Acme::Parataxis::Test::PoolHTTP::Handle->new(
timeout => $self->{timeout},
SSL_options => $self->{SSL_options},
verify_SSL => $self->{verify_SSL},
keep_alive => $self->{keep_alive},
keep_alive_timeout => $self->{keep_alive_timeout},
);
return $handle->connect( $scheme, $host, $port, $peer );
}
sub request {
my ( $self, $method_in, $url, $args ) = @_;
my $method = "$method_in"; # Local copy
my %new_args = %{ $args // {} };
my $orig_cb = $new_args{data_callback};
my $content = '';
t/015_http_mock_pool.t view on Meta::CPAN
package Acme::Parataxis::Test::MockPoolHTTP {
use parent 'HTTP::Tiny';
sub _open_handle {
my ( $self, $request, $scheme, $host, $port, $peer ) = @_;
my $handle = Acme::Parataxis::Test::MockPoolHTTP::Handle->new(
timeout => $self->{timeout},
SSL_options => $self->{SSL_options},
verify_SSL => $self->{verify_SSL},
keep_alive => $self->{keep_alive},
keep_alive_timeout => $self->{keep_alive_timeout}
);
return $handle->connect( $scheme, $host, $port, $peer );
}
sub request {
my ( $self, $method, $url, $args ) = @_;
no warnings 'uninitialized';
$method //= 'GET';
my %new_args = %{ $args // {} };
my $orig_cb = $new_args{data_callback};
( run in 1.552 second using v1.01-cache-2.11-cpan-df04353d9ac )