OpenTracing-Role
view release on metacpan or search on metacpan
lib/OpenTracing/Role/Tracer.pm view on Meta::CPAN
package OpenTracing::Role::Tracer;
our $VERSION = 'v0.86.1';
use syntax qw/maybe/;
use Moo::Role;
use MooX::HandlesVia;
use MooX::Should;
use Carp;
use List::Util qw/first/;
use OpenTracing::Types qw/ScopeManager Span SpanContext is_Span is_SpanContext/;
use Ref::Util qw/is_plain_hashref/;
use Role::Declare::Should -lax;
use Try::Tiny;
use Types::Common::Numeric qw/PositiveOrZeroNum/;
use Types::Standard qw/ArrayRef CodeRef Dict HashRef InstanceOf Maybe Object Str Undef/;
use Types::TypeTiny qw/TypeTiny/;
our @CARP_NOT;
has scope_manager => (
is => 'ro',
should => ScopeManager,
reader => 'get_scope_manager',
default => sub {
require 'OpenTracing::Implementation::NoOp::ScopeManager';
return OpenTracing::Implementation::NoOp::ScopeManager->new
},
);
sub get_active_span {
my $self = shift;
my $scope_manager = $self->get_scope_manager
or croak "Can't get a 'ScopeManager'";
my $scope = $scope_manager->get_active_scope
or return;
return $scope->get_span;
}
sub start_active_span {
my $self = shift;
my $operation_name = shift
or croak "Missing required operation_name";
my $opts = { @_ };
my $finish_span_on_close =
exists( $opts->{ finish_span_on_close } ) ?
!! delete $opts->{ finish_span_on_close }
: !undef
; # use 'truthness' of param if provided, or set to 'true' otherwise
my $span = $self->start_span( $operation_name => %$opts );
my $scope_manager = $self->get_scope_manager();
my $scope = $scope_manager->activate_span( $span,
finish_span_on_close => $finish_span_on_close
);
return $scope
}
sub start_span {
my $self = shift;
my $operation_name = shift
or croak "Missing required operation_name";
my $opts = { @_ };
my $start_time = delete $opts->{ start_time };
( run in 2.448 seconds using v1.01-cache-2.11-cpan-0bb4e1dffa6 )