The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

OpenTracing::Interface::ScopeManager - A role that defines the ScopeManager

SYNOPSIS

    package OpenTracing::Implementation::MyBackendService::ScopeManager;
        
    sub activate_span {
        ...
    }
    
    sub get_active_scope {
        ...
    }
    
    BEGIN {
        use Role::Tiny::With;
        with 'OpenTracing::Interface::ScopeManager'
    } # check at compile time, perl -c will work
    
    1;

DESCRIPTION

This 'role' describes the interface for any OpenTracing ScopeManager implementation.

The ScopeManager interface abstracts both the activation of Span instances via activate_Span and access to an active Scope via get_active_scope.

INSTANCE METHODS

activate_span

Set the specified Span as the active instance for the current context (usually a thread).

    my $span = $tracer->start_span( 'some operation'
        ignore_active_span => 1
    );
    
    my $scope_manager = $tracer->get_scope_manager;
    
    my $scope = $scope_manager->activate_span( $span,
        finish_span_on_close => 0
    );

The returned Scope represents the active state for the span. Once its active period is due, $scope->close() ought to be called. Observe the span will be automatically finished when $scope->close() is called.

Required Positional Parameter(s)
span, a required Span object.

The span to be activated.

Named Options
finish_span_on_close, as a Bool

When set to false, the span will not be automatically finished when the scope is being closed. This is 'true' by default.

Returns
Scope

The scope object for the given span.

Cget_active_scope>

Return the currently active Scope which can be used to access the currently active Span, using $scope->get_span.

    my $manager = $tracer->get_scope_manager;
    
    my $scope = $manager->get_activate_scope;
Positional Parameter(s)

    none

Returns
Maybe Scope

The currently active scope or undef if none.

SEE ALSO

OpenTracing::Interface

Describes the API definition for OpenTransport implementations written in the Perl5 language.

OpenTracing::Types

A library of Type::Tiny type constraints that provides Duck Type checks for all common elements that conform OpenTracing::Interface

CAVEATS

Since this role does nothing else than checking input and output, it is useful during development. Most likely it can be switched off safely in production environments.

AUTHOR

Theo van Hoesel <tvanhoesel@perceptyx.com>

COPYRIGHT AND LICENSE

'OpenTracing API for Perl' is Copyright (C) 2019 .. 2021, Perceptyx Inc

This library is free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0.

This library is distributed in the hope that it will be useful, but it is provided "as is" and without any express or implied warranties.

For details, see the full text of the license in the file LICENSE.