OpenTelemetry-SDK
view release on metacpan or search on metacpan
lib/OpenTelemetry/SDK/Trace/Span.pm view on Meta::CPAN
use Object::Pad ':experimental( init_expr mop )';
package OpenTelemetry::SDK::Trace::Span;
our $VERSION = '0.028';
use OpenTelemetry::Attributes;
class OpenTelemetry::SDK::Trace::Span
:isa(OpenTelemetry::Trace::Span)
:does(OpenTelemetry::Attributes)
{
use List::Util qw( any pairs );
use Ref::Util qw( is_arrayref is_hashref );
use Time::HiRes 'time';
use OpenTelemetry::Constants
-span_kind => { -as => sub { shift =~ s/^SPAN_KIND_//r } };
use OpenTelemetry::Common ();
use OpenTelemetry::SDK::Trace::SpanLimits;
use OpenTelemetry::SDK::Trace::Span::Readable;
use OpenTelemetry::Trace::Event;
use OpenTelemetry::Trace::Link;
use OpenTelemetry::Trace::SpanContext;
use OpenTelemetry::Trace::Span::Status;
use OpenTelemetry::Trace;
use isa qw(
Exception::Base
Exception::Class::Base
OpenTelemetry::Trace::SpanContext
);
my $logger = OpenTelemetry::Common::internal_logger;
field $dropped_events = 0;
field $dropped_links = 0;
field $end;
field $kind :param = INTERNAL;
field $limits :param //= OpenTelemetry::SDK::Trace::SpanLimits->new;
field $name :param;
field $resource :param = undef;
field $scope :param;
field $start :param = undef;
field $status = OpenTelemetry::Trace::Span::Status->unset;
field @events;
field @links;
field @processors;
field $parent_span_context;
# Internal method for adding a single link
#
# $self->$add_link({
# context => $valid_span_context,
# attributes => \%link_attributes,
# })
#
# Links with invalid span contexts are ignored
#
method $add_link ( $args ) {
return unless isa_OpenTelemetry_Trace_SpanContext($args->{context})
&& $args->{context}->valid;
if ( scalar @links >= $limits->link_count_limit ) {
$dropped_links++;
$logger->warn('Dropped link because it would exceed specified limit');
return;
}
push @links, OpenTelemetry::Trace::Link->new(
context => $args->{context},
attributes => $args->{attributes},
attribute_count_limit => $limits->link_attribute_count_limit,
( run in 1.788 second using v1.01-cache-2.11-cpan-39bf76dae61 )