Rabbit-R1/switch port/smali/smali_classes3/io/sentry/SentryTracer.smali
2024-05-21 17:08:36 -04:00

2812 lines
71 KiB
Smali

.class public final Lio/sentry/SentryTracer;
.super Ljava/lang/Object;
.source "SentryTracer.java"
# interfaces
.implements Lio/sentry/ITransaction;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lio/sentry/SentryTracer$FinishStatus;
}
.end annotation
# instance fields
.field private final baggage:Lio/sentry/Baggage;
.field private final children:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lio/sentry/Span;",
">;"
}
.end annotation
.end field
.field private final contexts:Lio/sentry/protocol/Contexts;
.field private volatile deadlineTimeoutTask:Ljava/util/TimerTask;
.field private final eventId:Lio/sentry/protocol/SentryId;
.field private finishStatus:Lio/sentry/SentryTracer$FinishStatus;
.field private final hub:Lio/sentry/IHub;
.field private volatile idleTimeoutTask:Ljava/util/TimerTask;
.field private final instrumenter:Lio/sentry/Instrumenter;
.field private final isDeadlineTimerRunning:Ljava/util/concurrent/atomic/AtomicBoolean;
.field private final isIdleFinishTimerRunning:Ljava/util/concurrent/atomic/AtomicBoolean;
.field private name:Ljava/lang/String;
.field private final root:Lio/sentry/Span;
.field private volatile timer:Ljava/util/Timer;
.field private final timerLock:Ljava/lang/Object;
.field private transactionNameSource:Lio/sentry/protocol/TransactionNameSource;
.field private final transactionOptions:Lio/sentry/TransactionOptions;
.field private final transactionPerformanceCollector:Lio/sentry/TransactionPerformanceCollector;
# direct methods
.method public constructor <init>(Lio/sentry/TransactionContext;Lio/sentry/IHub;)V
.locals 2
.line 56
new-instance v0, Lio/sentry/TransactionOptions;
invoke-direct {v0}, Lio/sentry/TransactionOptions;-><init>()V
const/4 v1, 0x0
invoke-direct {p0, p1, p2, v0, v1}, Lio/sentry/SentryTracer;-><init>(Lio/sentry/TransactionContext;Lio/sentry/IHub;Lio/sentry/TransactionOptions;Lio/sentry/TransactionPerformanceCollector;)V
return-void
.end method
.method public constructor <init>(Lio/sentry/TransactionContext;Lio/sentry/IHub;Lio/sentry/TransactionOptions;)V
.locals 1
const/4 v0, 0x0
.line 63
invoke-direct {p0, p1, p2, p3, v0}, Lio/sentry/SentryTracer;-><init>(Lio/sentry/TransactionContext;Lio/sentry/IHub;Lio/sentry/TransactionOptions;Lio/sentry/TransactionPerformanceCollector;)V
return-void
.end method
.method constructor <init>(Lio/sentry/TransactionContext;Lio/sentry/IHub;Lio/sentry/TransactionOptions;Lio/sentry/TransactionPerformanceCollector;)V
.locals 7
.line 70
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 26
new-instance v0, Lio/sentry/protocol/SentryId;
invoke-direct {v0}, Lio/sentry/protocol/SentryId;-><init>()V
iput-object v0, p0, Lio/sentry/SentryTracer;->eventId:Lio/sentry/protocol/SentryId;
.line 28
new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList;
invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V
iput-object v0, p0, Lio/sentry/SentryTracer;->children:Ljava/util/List;
.line 37
sget-object v0, Lio/sentry/SentryTracer$FinishStatus;->NOT_FINISHED:Lio/sentry/SentryTracer$FinishStatus;
iput-object v0, p0, Lio/sentry/SentryTracer;->finishStatus:Lio/sentry/SentryTracer$FinishStatus;
const/4 v0, 0x0
iput-object v0, p0, Lio/sentry/SentryTracer;->timer:Ljava/util/Timer;
.line 43
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
iput-object v0, p0, Lio/sentry/SentryTracer;->timerLock:Ljava/lang/Object;
.line 45
new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean;
const/4 v1, 0x0
invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>(Z)V
iput-object v0, p0, Lio/sentry/SentryTracer;->isIdleFinishTimerRunning:Ljava/util/concurrent/atomic/AtomicBoolean;
.line 46
new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>(Z)V
iput-object v0, p0, Lio/sentry/SentryTracer;->isDeadlineTimerRunning:Ljava/util/concurrent/atomic/AtomicBoolean;
.line 51
new-instance v0, Lio/sentry/protocol/Contexts;
invoke-direct {v0}, Lio/sentry/protocol/Contexts;-><init>()V
iput-object v0, p0, Lio/sentry/SentryTracer;->contexts:Lio/sentry/protocol/Contexts;
const-string v0, "context is required"
.line 71
invoke-static {p1, v0}, Lio/sentry/util/Objects;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
const-string v0, "hub is required"
.line 72
invoke-static {p2, v0}, Lio/sentry/util/Objects;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
.line 74
new-instance v0, Lio/sentry/Span;
.line 75
invoke-virtual {p3}, Lio/sentry/TransactionOptions;->getStartTimestamp()Lio/sentry/SentryDate;
move-result-object v5
move-object v1, v0
move-object v2, p1
move-object v3, p0
move-object v4, p2
move-object v6, p3
invoke-direct/range {v1 .. v6}, Lio/sentry/Span;-><init>(Lio/sentry/TransactionContext;Lio/sentry/SentryTracer;Lio/sentry/IHub;Lio/sentry/SentryDate;Lio/sentry/SpanOptions;)V
iput-object v0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 77
invoke-virtual {p1}, Lio/sentry/TransactionContext;->getName()Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lio/sentry/SentryTracer;->name:Ljava/lang/String;
.line 78
invoke-virtual {p1}, Lio/sentry/TransactionContext;->getInstrumenter()Lio/sentry/Instrumenter;
move-result-object v0
iput-object v0, p0, Lio/sentry/SentryTracer;->instrumenter:Lio/sentry/Instrumenter;
iput-object p2, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
iput-object p4, p0, Lio/sentry/SentryTracer;->transactionPerformanceCollector:Lio/sentry/TransactionPerformanceCollector;
.line 81
invoke-virtual {p1}, Lio/sentry/TransactionContext;->getTransactionNameSource()Lio/sentry/protocol/TransactionNameSource;
move-result-object v0
iput-object v0, p0, Lio/sentry/SentryTracer;->transactionNameSource:Lio/sentry/protocol/TransactionNameSource;
iput-object p3, p0, Lio/sentry/SentryTracer;->transactionOptions:Lio/sentry/TransactionOptions;
.line 84
invoke-virtual {p1}, Lio/sentry/TransactionContext;->getBaggage()Lio/sentry/Baggage;
move-result-object v0
if-eqz v0, :cond_0
.line 85
invoke-virtual {p1}, Lio/sentry/TransactionContext;->getBaggage()Lio/sentry/Baggage;
move-result-object p1
iput-object p1, p0, Lio/sentry/SentryTracer;->baggage:Lio/sentry/Baggage;
goto :goto_0
.line 87
:cond_0
new-instance p1, Lio/sentry/Baggage;
invoke-interface {p2}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object p2
invoke-virtual {p2}, Lio/sentry/SentryOptions;->getLogger()Lio/sentry/ILogger;
move-result-object p2
invoke-direct {p1, p2}, Lio/sentry/Baggage;-><init>(Lio/sentry/ILogger;)V
iput-object p1, p0, Lio/sentry/SentryTracer;->baggage:Lio/sentry/Baggage;
:goto_0
if-eqz p4, :cond_1
.line 92
sget-object p1, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean;
invoke-virtual {p0}, Lio/sentry/SentryTracer;->isProfileSampled()Ljava/lang/Boolean;
move-result-object p2
invoke-virtual {p1, p2}, Ljava/lang/Boolean;->equals(Ljava/lang/Object;)Z
move-result p1
if-eqz p1, :cond_1
.line 93
invoke-interface {p4, p0}, Lio/sentry/TransactionPerformanceCollector;->start(Lio/sentry/ITransaction;)V
.line 96
:cond_1
invoke-virtual {p3}, Lio/sentry/TransactionOptions;->getIdleTimeout()Ljava/lang/Long;
move-result-object p1
if-nez p1, :cond_2
.line 97
invoke-virtual {p3}, Lio/sentry/TransactionOptions;->getDeadlineTimeout()Ljava/lang/Long;
move-result-object p1
if-eqz p1, :cond_3
.line 98
:cond_2
new-instance p1, Ljava/util/Timer;
const/4 p2, 0x1
invoke-direct {p1, p2}, Ljava/util/Timer;-><init>(Z)V
iput-object p1, p0, Lio/sentry/SentryTracer;->timer:Ljava/util/Timer;
.line 100
invoke-direct {p0}, Lio/sentry/SentryTracer;->scheduleDeadlineTimeout()V
.line 101
invoke-virtual {p0}, Lio/sentry/SentryTracer;->scheduleFinish()V
:cond_3
return-void
.end method
.method static synthetic access$000(Lio/sentry/SentryTracer;)V
.locals 0
.line 25
invoke-direct {p0}, Lio/sentry/SentryTracer;->onIdleTimeoutReached()V
return-void
.end method
.method static synthetic access$200(Lio/sentry/SentryTracer;)V
.locals 0
.line 25
invoke-direct {p0}, Lio/sentry/SentryTracer;->onDeadlineTimeoutReached()V
return-void
.end method
.method private cancelDeadlineTimer()V
.locals 3
iget-object v0, p0, Lio/sentry/SentryTracer;->timerLock:Ljava/lang/Object;
.line 308
monitor-enter v0
:try_start_0
iget-object v1, p0, Lio/sentry/SentryTracer;->deadlineTimeoutTask:Ljava/util/TimerTask;
if-eqz v1, :cond_0
iget-object v1, p0, Lio/sentry/SentryTracer;->deadlineTimeoutTask:Ljava/util/TimerTask;
.line 310
invoke-virtual {v1}, Ljava/util/TimerTask;->cancel()Z
iget-object v1, p0, Lio/sentry/SentryTracer;->isDeadlineTimerRunning:Ljava/util/concurrent/atomic/AtomicBoolean;
const/4 v2, 0x0
.line 311
invoke-virtual {v1, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
const/4 v1, 0x0
iput-object v1, p0, Lio/sentry/SentryTracer;->deadlineTimeoutTask:Ljava/util/TimerTask;
.line 314
:cond_0
monitor-exit v0
return-void
:catchall_0
move-exception p0
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
throw p0
.end method
.method private cancelIdleTimer()V
.locals 3
iget-object v0, p0, Lio/sentry/SentryTracer;->timerLock:Ljava/lang/Object;
.line 269
monitor-enter v0
:try_start_0
iget-object v1, p0, Lio/sentry/SentryTracer;->idleTimeoutTask:Ljava/util/TimerTask;
if-eqz v1, :cond_0
iget-object v1, p0, Lio/sentry/SentryTracer;->idleTimeoutTask:Ljava/util/TimerTask;
.line 271
invoke-virtual {v1}, Ljava/util/TimerTask;->cancel()Z
iget-object v1, p0, Lio/sentry/SentryTracer;->isIdleFinishTimerRunning:Ljava/util/concurrent/atomic/AtomicBoolean;
const/4 v2, 0x0
.line 272
invoke-virtual {v1, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
const/4 v1, 0x0
iput-object v1, p0, Lio/sentry/SentryTracer;->idleTimeoutTask:Ljava/util/TimerTask;
.line 275
:cond_0
monitor-exit v0
return-void
:catchall_0
move-exception p0
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
throw p0
.end method
.method private createChild(Lio/sentry/SpanId;Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
.locals 9
iget-object v0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 413
invoke-virtual {v0}, Lio/sentry/Span;->isFinished()Z
move-result v0
if-eqz v0, :cond_0
.line 414
invoke-static {}, Lio/sentry/NoOpSpan;->getInstance()Lio/sentry/NoOpSpan;
move-result-object p0
return-object p0
:cond_0
iget-object v0, p0, Lio/sentry/SentryTracer;->instrumenter:Lio/sentry/Instrumenter;
.line 417
invoke-virtual {v0, p5}, Lio/sentry/Instrumenter;->equals(Ljava/lang/Object;)Z
move-result p5
if-nez p5, :cond_1
.line 418
invoke-static {}, Lio/sentry/NoOpSpan;->getInstance()Lio/sentry/NoOpSpan;
move-result-object p0
return-object p0
:cond_1
iget-object p5, p0, Lio/sentry/SentryTracer;->children:Ljava/util/List;
.line 421
invoke-interface {p5}, Ljava/util/List;->size()I
move-result p5
iget-object v0, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
invoke-interface {v0}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object v0
invoke-virtual {v0}, Lio/sentry/SentryOptions;->getMaxSpans()I
move-result v0
if-ge p5, v0, :cond_4
const-string p5, "parentSpanId is required"
.line 422
invoke-static {p1, p5}, Lio/sentry/util/Objects;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
const-string p5, "operation is required"
.line 423
invoke-static {p2, p5}, Lio/sentry/util/Objects;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
.line 424
invoke-direct {p0}, Lio/sentry/SentryTracer;->cancelIdleTimer()V
.line 425
new-instance p5, Lio/sentry/Span;
iget-object v0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 427
invoke-virtual {v0}, Lio/sentry/Span;->getTraceId()Lio/sentry/protocol/SentryId;
move-result-object v1
iget-object v5, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
new-instance v8, Lio/sentry/SentryTracer$$ExternalSyntheticLambda1;
invoke-direct {v8, p0}, Lio/sentry/SentryTracer$$ExternalSyntheticLambda1;-><init>(Lio/sentry/SentryTracer;)V
move-object v0, p5
move-object v2, p1
move-object v3, p0
move-object v4, p2
move-object v6, p4
move-object v7, p6
invoke-direct/range {v0 .. v8}, Lio/sentry/Span;-><init>(Lio/sentry/protocol/SentryId;Lio/sentry/SpanId;Lio/sentry/SentryTracer;Ljava/lang/String;Lio/sentry/IHub;Lio/sentry/SentryDate;Lio/sentry/SpanOptions;Lio/sentry/SpanFinishedCallback;)V
.line 450
invoke-virtual {p5, p3}, Lio/sentry/Span;->setDescription(Ljava/lang/String;)V
.line 451
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/Thread;->getId()J
move-result-wide p1
invoke-static {p1, p2}, Ljava/lang/String;->valueOf(J)Ljava/lang/String;
move-result-object p1
const-string p2, "thread.id"
invoke-virtual {p5, p2, p1}, Lio/sentry/Span;->setData(Ljava/lang/String;Ljava/lang/Object;)V
iget-object p1, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 454
invoke-interface {p1}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object p1
invoke-virtual {p1}, Lio/sentry/SentryOptions;->getMainThreadChecker()Lio/sentry/util/thread/IMainThreadChecker;
move-result-object p1
invoke-interface {p1}, Lio/sentry/util/thread/IMainThreadChecker;->isMainThread()Z
move-result p1
if-eqz p1, :cond_2
const-string p1, "main"
goto :goto_0
.line 456
:cond_2
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/Thread;->getName()Ljava/lang/String;
move-result-object p1
:goto_0
const-string p2, "thread.name"
.line 452
invoke-virtual {p5, p2, p1}, Lio/sentry/Span;->setData(Ljava/lang/String;Ljava/lang/Object;)V
iget-object p1, p0, Lio/sentry/SentryTracer;->children:Ljava/util/List;
.line 457
invoke-interface {p1, p5}, Ljava/util/List;->add(Ljava/lang/Object;)Z
iget-object p0, p0, Lio/sentry/SentryTracer;->transactionPerformanceCollector:Lio/sentry/TransactionPerformanceCollector;
if-eqz p0, :cond_3
.line 459
invoke-interface {p0, p5}, Lio/sentry/TransactionPerformanceCollector;->onSpanStarted(Lio/sentry/ISpan;)V
:cond_3
return-object p5
:cond_4
iget-object p0, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 463
invoke-interface {p0}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object p0
.line 464
invoke-virtual {p0}, Lio/sentry/SentryOptions;->getLogger()Lio/sentry/ILogger;
move-result-object p0
sget-object p1, Lio/sentry/SentryLevel;->WARNING:Lio/sentry/SentryLevel;
const-string p4, "Span operation: %s, description: %s dropped due to limit reached. Returning NoOpSpan."
filled-new-array {p2, p3}, [Ljava/lang/Object;
move-result-object p2
.line 465
invoke-interface {p0, p1, p4, p2}, Lio/sentry/ILogger;->log(Lio/sentry/SentryLevel;Ljava/lang/String;[Ljava/lang/Object;)V
.line 470
invoke-static {}, Lio/sentry/NoOpSpan;->getInstance()Lio/sentry/NoOpSpan;
move-result-object p0
return-object p0
.end method
.method private createChild(Lio/sentry/SpanId;Ljava/lang/String;Ljava/lang/String;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
.locals 7
const/4 v4, 0x0
.line 402
sget-object v5, Lio/sentry/Instrumenter;->SENTRY:Lio/sentry/Instrumenter;
move-object v0, p0
move-object v1, p1
move-object v2, p2
move-object v3, p3
move-object v6, p4
invoke-direct/range {v0 .. v6}, Lio/sentry/SentryTracer;->createChild(Lio/sentry/SpanId;Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
move-result-object p0
return-object p0
.end method
.method private createChild(Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
.locals 8
iget-object v0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 524
invoke-virtual {v0}, Lio/sentry/Span;->isFinished()Z
move-result v0
if-eqz v0, :cond_0
.line 525
invoke-static {}, Lio/sentry/NoOpSpan;->getInstance()Lio/sentry/NoOpSpan;
move-result-object p0
return-object p0
:cond_0
iget-object v0, p0, Lio/sentry/SentryTracer;->instrumenter:Lio/sentry/Instrumenter;
.line 528
invoke-virtual {v0, p4}, Lio/sentry/Instrumenter;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_1
.line 529
invoke-static {}, Lio/sentry/NoOpSpan;->getInstance()Lio/sentry/NoOpSpan;
move-result-object p0
return-object p0
:cond_1
iget-object v0, p0, Lio/sentry/SentryTracer;->children:Ljava/util/List;
.line 532
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
iget-object v1, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
invoke-interface {v1}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object v1
invoke-virtual {v1}, Lio/sentry/SentryOptions;->getMaxSpans()I
move-result v1
if-ge v0, v1, :cond_2
iget-object v2, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
move-object v3, p1
move-object v4, p2
move-object v5, p3
move-object v6, p4
move-object v7, p5
.line 533
invoke-virtual/range {v2 .. v7}, Lio/sentry/Span;->startChild(Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
move-result-object p0
return-object p0
:cond_2
iget-object p0, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 535
invoke-interface {p0}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object p0
.line 536
invoke-virtual {p0}, Lio/sentry/SentryOptions;->getLogger()Lio/sentry/ILogger;
move-result-object p0
sget-object p3, Lio/sentry/SentryLevel;->WARNING:Lio/sentry/SentryLevel;
const-string p4, "Span operation: %s, description: %s dropped due to limit reached. Returning NoOpSpan."
filled-new-array {p1, p2}, [Ljava/lang/Object;
move-result-object p1
.line 537
invoke-interface {p0, p3, p4, p1}, Lio/sentry/ILogger;->log(Lio/sentry/SentryLevel;Ljava/lang/String;[Ljava/lang/Object;)V
.line 542
invoke-static {}, Lio/sentry/NoOpSpan;->getInstance()Lio/sentry/NoOpSpan;
move-result-object p0
return-object p0
.end method
.method private hasAllChildrenFinished()Z
.locals 1
.line 605
new-instance v0, Ljava/util/ArrayList;
iget-object p0, p0, Lio/sentry/SentryTracer;->children:Ljava/util/List;
invoke-direct {v0, p0}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
.line 606
invoke-interface {v0}, Ljava/util/List;->isEmpty()Z
move-result p0
if-nez p0, :cond_1
.line 607
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p0
:cond_0
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lio/sentry/Span;
.line 608
invoke-virtual {v0}, Lio/sentry/Span;->isFinished()Z
move-result v0
if-nez v0, :cond_0
const/4 p0, 0x0
return p0
:cond_1
const/4 p0, 0x1
return p0
.end method
.method static synthetic lambda$updateBaggageValues$3(Ljava/util/concurrent/atomic/AtomicReference;Lio/sentry/IScope;)V
.locals 0
.line 584
invoke-interface {p1}, Lio/sentry/IScope;->getUser()Lio/sentry/protocol/User;
move-result-object p1
invoke-virtual {p0, p1}, Ljava/util/concurrent/atomic/AtomicReference;->set(Ljava/lang/Object;)V
return-void
.end method
.method private onDeadlineTimeoutReached()V
.locals 4
.line 144
invoke-virtual {p0}, Lio/sentry/SentryTracer;->getStatus()Lio/sentry/SpanStatus;
move-result-object v0
if-eqz v0, :cond_0
goto :goto_0
.line 146
:cond_0
sget-object v0, Lio/sentry/SpanStatus;->DEADLINE_EXCEEDED:Lio/sentry/SpanStatus;
:goto_0
iget-object v1, p0, Lio/sentry/SentryTracer;->transactionOptions:Lio/sentry/TransactionOptions;
.line 147
invoke-virtual {v1}, Lio/sentry/TransactionOptions;->getIdleTimeout()Ljava/lang/Long;
move-result-object v1
const/4 v2, 0x0
if-eqz v1, :cond_1
const/4 v1, 0x1
goto :goto_1
:cond_1
move v1, v2
:goto_1
const/4 v3, 0x0
.line 145
invoke-virtual {p0, v0, v1, v3}, Lio/sentry/SentryTracer;->forceFinish(Lio/sentry/SpanStatus;ZLio/sentry/Hint;)V
iget-object p0, p0, Lio/sentry/SentryTracer;->isDeadlineTimerRunning:Ljava/util/concurrent/atomic/AtomicBoolean;
.line 149
invoke-virtual {p0, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
return-void
.end method
.method private onIdleTimeoutReached()V
.locals 1
.line 138
invoke-virtual {p0}, Lio/sentry/SentryTracer;->getStatus()Lio/sentry/SpanStatus;
move-result-object v0
if-eqz v0, :cond_0
goto :goto_0
.line 139
:cond_0
sget-object v0, Lio/sentry/SpanStatus;->OK:Lio/sentry/SpanStatus;
:goto_0
invoke-virtual {p0, v0}, Lio/sentry/SentryTracer;->finish(Lio/sentry/SpanStatus;)V
iget-object p0, p0, Lio/sentry/SentryTracer;->isIdleFinishTimerRunning:Ljava/util/concurrent/atomic/AtomicBoolean;
const/4 v0, 0x0
.line 140
invoke-virtual {p0, v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
return-void
.end method
.method private scheduleDeadlineTimeout()V
.locals 6
iget-object v0, p0, Lio/sentry/SentryTracer;->transactionOptions:Lio/sentry/TransactionOptions;
.line 279
invoke-virtual {v0}, Lio/sentry/TransactionOptions;->getDeadlineTimeout()Ljava/lang/Long;
move-result-object v0
if-eqz v0, :cond_1
iget-object v1, p0, Lio/sentry/SentryTracer;->timerLock:Ljava/lang/Object;
.line 281
monitor-enter v1
:try_start_0
iget-object v2, p0, Lio/sentry/SentryTracer;->timer:Ljava/util/Timer;
if-eqz v2, :cond_0
.line 283
invoke-direct {p0}, Lio/sentry/SentryTracer;->cancelDeadlineTimer()V
iget-object v2, p0, Lio/sentry/SentryTracer;->isDeadlineTimerRunning:Ljava/util/concurrent/atomic/AtomicBoolean;
const/4 v3, 0x1
.line 284
invoke-virtual {v2, v3}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
.line 285
new-instance v2, Lio/sentry/SentryTracer$2;
invoke-direct {v2, p0}, Lio/sentry/SentryTracer$2;-><init>(Lio/sentry/SentryTracer;)V
iput-object v2, p0, Lio/sentry/SentryTracer;->deadlineTimeoutTask:Ljava/util/TimerTask;
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_1
:try_start_1
iget-object v2, p0, Lio/sentry/SentryTracer;->timer:Ljava/util/Timer;
iget-object v3, p0, Lio/sentry/SentryTracer;->deadlineTimeoutTask:Ljava/util/TimerTask;
.line 293
invoke-virtual {v0}, Ljava/lang/Long;->longValue()J
move-result-wide v4
invoke-virtual {v2, v3, v4, v5}, Ljava/util/Timer;->schedule(Ljava/util/TimerTask;J)V
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
goto :goto_0
:catchall_0
move-exception v0
:try_start_2
iget-object v2, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 295
invoke-interface {v2}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object v2
.line 296
invoke-virtual {v2}, Lio/sentry/SentryOptions;->getLogger()Lio/sentry/ILogger;
move-result-object v2
sget-object v3, Lio/sentry/SentryLevel;->WARNING:Lio/sentry/SentryLevel;
const-string v4, "Failed to schedule finish timer"
.line 297
invoke-interface {v2, v3, v4, v0}, Lio/sentry/ILogger;->log(Lio/sentry/SentryLevel;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 300
invoke-direct {p0}, Lio/sentry/SentryTracer;->onDeadlineTimeoutReached()V
.line 303
:cond_0
:goto_0
monitor-exit v1
goto :goto_1
:catchall_1
move-exception p0
monitor-exit v1
:try_end_2
.catchall {:try_start_2 .. :try_end_2} :catchall_1
throw p0
:cond_1
:goto_1
return-void
.end method
.method private updateBaggageValues()V
.locals 4
.line 579
monitor-enter p0
:try_start_0
iget-object v0, p0, Lio/sentry/SentryTracer;->baggage:Lio/sentry/Baggage;
.line 580
invoke-virtual {v0}, Lio/sentry/Baggage;->isMutable()Z
move-result v0
if-eqz v0, :cond_0
.line 581
new-instance v0, Ljava/util/concurrent/atomic/AtomicReference;
invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicReference;-><init>()V
iget-object v1, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 582
new-instance v2, Lio/sentry/SentryTracer$$ExternalSyntheticLambda3;
invoke-direct {v2, v0}, Lio/sentry/SentryTracer$$ExternalSyntheticLambda3;-><init>(Ljava/util/concurrent/atomic/AtomicReference;)V
invoke-interface {v1, v2}, Lio/sentry/IHub;->configureScope(Lio/sentry/ScopeCallback;)V
iget-object v1, p0, Lio/sentry/SentryTracer;->baggage:Lio/sentry/Baggage;
.line 587
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lio/sentry/protocol/User;
iget-object v2, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
invoke-interface {v2}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object v2
invoke-virtual {p0}, Lio/sentry/SentryTracer;->getSamplingDecision()Lio/sentry/TracesSamplingDecision;
move-result-object v3
.line 586
invoke-virtual {v1, p0, v0, v2, v3}, Lio/sentry/Baggage;->setValuesFromTransaction(Lio/sentry/ITransaction;Lio/sentry/protocol/User;Lio/sentry/SentryOptions;Lio/sentry/TracesSamplingDecision;)V
iget-object v0, p0, Lio/sentry/SentryTracer;->baggage:Lio/sentry/Baggage;
.line 588
invoke-virtual {v0}, Lio/sentry/Baggage;->freeze()V
.line 590
:cond_0
monitor-exit p0
return-void
:catchall_0
move-exception v0
monitor-exit p0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
throw v0
.end method
# virtual methods
.method public finish()V
.locals 1
.line 553
invoke-virtual {p0}, Lio/sentry/SentryTracer;->getStatus()Lio/sentry/SpanStatus;
move-result-object v0
invoke-virtual {p0, v0}, Lio/sentry/SentryTracer;->finish(Lio/sentry/SpanStatus;)V
return-void
.end method
.method public finish(Lio/sentry/SpanStatus;)V
.locals 1
const/4 v0, 0x0
.line 558
invoke-virtual {p0, p1, v0}, Lio/sentry/SentryTracer;->finish(Lio/sentry/SpanStatus;Lio/sentry/SentryDate;)V
return-void
.end method
.method public finish(Lio/sentry/SpanStatus;Lio/sentry/SentryDate;)V
.locals 2
const/4 v0, 0x1
const/4 v1, 0x0
.line 565
invoke-virtual {p0, p1, p2, v0, v1}, Lio/sentry/SentryTracer;->finish(Lio/sentry/SpanStatus;Lio/sentry/SentryDate;ZLio/sentry/Hint;)V
return-void
.end method
.method public finish(Lio/sentry/SpanStatus;Lio/sentry/SentryDate;ZLio/sentry/Hint;)V
.locals 3
iget-object v0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 180
invoke-virtual {v0}, Lio/sentry/Span;->getFinishDate()Lio/sentry/SentryDate;
move-result-object v0
if-eqz p2, :cond_0
goto :goto_0
:cond_0
move-object p2, v0
:goto_0
if-nez p2, :cond_1
iget-object p2, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 189
invoke-interface {p2}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object p2
invoke-virtual {p2}, Lio/sentry/SentryOptions;->getDateProvider()Lio/sentry/SentryDateProvider;
move-result-object p2
invoke-interface {p2}, Lio/sentry/SentryDateProvider;->now()Lio/sentry/SentryDate;
move-result-object p2
:cond_1
iget-object v0, p0, Lio/sentry/SentryTracer;->children:Ljava/util/List;
.line 193
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v0
:cond_2
:goto_1
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_4
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lio/sentry/Span;
.line 194
invoke-virtual {v1}, Lio/sentry/Span;->getOptions()Lio/sentry/SpanOptions;
move-result-object v2
invoke-virtual {v2}, Lio/sentry/SpanOptions;->isIdle()Z
move-result v2
if-eqz v2, :cond_2
if-eqz p1, :cond_3
move-object v2, p1
goto :goto_2
.line 195
:cond_3
invoke-virtual {p0}, Lio/sentry/SentryTracer;->getSpanContext()Lio/sentry/SpanContext;
move-result-object v2
iget-object v2, v2, Lio/sentry/SpanContext;->status:Lio/sentry/SpanStatus;
:goto_2
invoke-virtual {v1, v2, p2}, Lio/sentry/Span;->finish(Lio/sentry/SpanStatus;Lio/sentry/SentryDate;)V
goto :goto_1
.line 199
:cond_4
invoke-static {p1}, Lio/sentry/SentryTracer$FinishStatus;->finishing(Lio/sentry/SpanStatus;)Lio/sentry/SentryTracer$FinishStatus;
move-result-object p1
iput-object p1, p0, Lio/sentry/SentryTracer;->finishStatus:Lio/sentry/SentryTracer$FinishStatus;
iget-object p1, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 200
invoke-virtual {p1}, Lio/sentry/Span;->isFinished()Z
move-result p1
if-nez p1, :cond_d
iget-object p1, p0, Lio/sentry/SentryTracer;->transactionOptions:Lio/sentry/TransactionOptions;
.line 201
invoke-virtual {p1}, Lio/sentry/TransactionOptions;->isWaitForChildren()Z
move-result p1
if-eqz p1, :cond_5
invoke-direct {p0}, Lio/sentry/SentryTracer;->hasAllChildrenFinished()Z
move-result p1
if-eqz p1, :cond_d
:cond_5
iget-object p1, p0, Lio/sentry/SentryTracer;->transactionPerformanceCollector:Lio/sentry/TransactionPerformanceCollector;
const/4 v0, 0x0
if-eqz p1, :cond_6
.line 204
invoke-interface {p1, p0}, Lio/sentry/TransactionPerformanceCollector;->stop(Lio/sentry/ITransaction;)Ljava/util/List;
move-result-object p1
goto :goto_3
:cond_6
move-object p1, v0
.line 208
:goto_3
sget-object v1, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean;
invoke-virtual {p0}, Lio/sentry/SentryTracer;->isSampled()Ljava/lang/Boolean;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/Boolean;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_7
sget-object v1, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean;
invoke-virtual {p0}, Lio/sentry/SentryTracer;->isProfileSampled()Ljava/lang/Boolean;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/Boolean;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_7
iget-object v1, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 210
invoke-interface {v1}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object v1
.line 211
invoke-virtual {v1}, Lio/sentry/SentryOptions;->getTransactionProfiler()Lio/sentry/ITransactionProfiler;
move-result-object v1
iget-object v2, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 212
invoke-interface {v2}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object v2
invoke-interface {v1, p0, p1, v2}, Lio/sentry/ITransactionProfiler;->onTransactionFinish(Lio/sentry/ITransaction;Ljava/util/List;Lio/sentry/SentryOptions;)Lio/sentry/ProfilingTraceData;
move-result-object v1
goto :goto_4
:cond_7
move-object v1, v0
:goto_4
if-eqz p1, :cond_8
.line 215
invoke-interface {p1}, Ljava/util/List;->clear()V
:cond_8
iget-object p1, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
iget-object v2, p0, Lio/sentry/SentryTracer;->finishStatus:Lio/sentry/SentryTracer$FinishStatus;
.line 223
invoke-static {v2}, Lio/sentry/SentryTracer$FinishStatus;->access$100(Lio/sentry/SentryTracer$FinishStatus;)Lio/sentry/SpanStatus;
move-result-object v2
invoke-virtual {p1, v2, p2}, Lio/sentry/Span;->finish(Lio/sentry/SpanStatus;Lio/sentry/SentryDate;)V
iget-object p1, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 225
new-instance p2, Lio/sentry/SentryTracer$$ExternalSyntheticLambda0;
invoke-direct {p2, p0}, Lio/sentry/SentryTracer$$ExternalSyntheticLambda0;-><init>(Lio/sentry/SentryTracer;)V
invoke-interface {p1, p2}, Lio/sentry/IHub;->configureScope(Lio/sentry/ScopeCallback;)V
.line 234
new-instance p1, Lio/sentry/protocol/SentryTransaction;
invoke-direct {p1, p0}, Lio/sentry/protocol/SentryTransaction;-><init>(Lio/sentry/SentryTracer;)V
iget-object p2, p0, Lio/sentry/SentryTracer;->transactionOptions:Lio/sentry/TransactionOptions;
.line 236
invoke-virtual {p2}, Lio/sentry/TransactionOptions;->getTransactionFinishedCallback()Lio/sentry/TransactionFinishedCallback;
move-result-object p2
if-eqz p2, :cond_9
.line 238
invoke-interface {p2, p0}, Lio/sentry/TransactionFinishedCallback;->execute(Lio/sentry/ITransaction;)V
:cond_9
iget-object p2, p0, Lio/sentry/SentryTracer;->timer:Ljava/util/Timer;
if-eqz p2, :cond_b
iget-object p2, p0, Lio/sentry/SentryTracer;->timerLock:Ljava/lang/Object;
.line 242
monitor-enter p2
:try_start_0
iget-object v2, p0, Lio/sentry/SentryTracer;->timer:Ljava/util/Timer;
if-eqz v2, :cond_a
.line 244
invoke-direct {p0}, Lio/sentry/SentryTracer;->cancelIdleTimer()V
.line 245
invoke-direct {p0}, Lio/sentry/SentryTracer;->cancelDeadlineTimer()V
iget-object v2, p0, Lio/sentry/SentryTracer;->timer:Ljava/util/Timer;
.line 246
invoke-virtual {v2}, Ljava/util/Timer;->cancel()V
iput-object v0, p0, Lio/sentry/SentryTracer;->timer:Ljava/util/Timer;
.line 249
:cond_a
monitor-exit p2
goto :goto_5
:catchall_0
move-exception p0
monitor-exit p2
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
throw p0
:cond_b
:goto_5
if-eqz p3, :cond_c
iget-object p2, p0, Lio/sentry/SentryTracer;->children:Ljava/util/List;
.line 252
invoke-interface {p2}, Ljava/util/List;->isEmpty()Z
move-result p2
if-eqz p2, :cond_c
iget-object p2, p0, Lio/sentry/SentryTracer;->transactionOptions:Lio/sentry/TransactionOptions;
invoke-virtual {p2}, Lio/sentry/TransactionOptions;->getIdleTimeout()Ljava/lang/Long;
move-result-object p2
if-eqz p2, :cond_c
iget-object p1, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 254
invoke-interface {p1}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object p1
.line 255
invoke-virtual {p1}, Lio/sentry/SentryOptions;->getLogger()Lio/sentry/ILogger;
move-result-object p1
sget-object p2, Lio/sentry/SentryLevel;->DEBUG:Lio/sentry/SentryLevel;
const-string p3, "Dropping idle transaction %s because it has no child spans"
iget-object p0, p0, Lio/sentry/SentryTracer;->name:Ljava/lang/String;
filled-new-array {p0}, [Ljava/lang/Object;
move-result-object p0
.line 256
invoke-interface {p1, p2, p3, p0}, Lio/sentry/ILogger;->log(Lio/sentry/SentryLevel;Ljava/lang/String;[Ljava/lang/Object;)V
return-void
.line 263
:cond_c
invoke-virtual {p1}, Lio/sentry/protocol/SentryTransaction;->getMeasurements()Ljava/util/Map;
move-result-object p2
iget-object p3, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
invoke-virtual {p3}, Lio/sentry/Span;->getMeasurements()Ljava/util/Map;
move-result-object p3
invoke-interface {p2, p3}, Ljava/util/Map;->putAll(Ljava/util/Map;)V
iget-object p2, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 264
invoke-virtual {p0}, Lio/sentry/SentryTracer;->traceContext()Lio/sentry/TraceContext;
move-result-object p0
invoke-interface {p2, p1, p0, p4, v1}, Lio/sentry/IHub;->captureTransaction(Lio/sentry/protocol/SentryTransaction;Lio/sentry/TraceContext;Lio/sentry/Hint;Lio/sentry/ProfilingTraceData;)Lio/sentry/protocol/SentryId;
:cond_d
return-void
.end method
.method public forceFinish(Lio/sentry/SpanStatus;ZLio/sentry/Hint;)V
.locals 4
.line 155
invoke-virtual {p0}, Lio/sentry/SentryTracer;->isFinished()Z
move-result v0
if-eqz v0, :cond_0
return-void
:cond_0
iget-object v0, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 159
invoke-interface {v0}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object v0
invoke-virtual {v0}, Lio/sentry/SentryOptions;->getDateProvider()Lio/sentry/SentryDateProvider;
move-result-object v0
invoke-interface {v0}, Lio/sentry/SentryDateProvider;->now()Lio/sentry/SentryDate;
move-result-object v0
iget-object v1, p0, Lio/sentry/SentryTracer;->children:Ljava/util/List;
.line 164
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v2
invoke-interface {v1, v2}, Ljava/util/List;->listIterator(I)Ljava/util/ListIterator;
move-result-object v1
.line 165
:goto_0
invoke-interface {v1}, Ljava/util/ListIterator;->hasPrevious()Z
move-result v2
if-eqz v2, :cond_1
.line 166
invoke-interface {v1}, Ljava/util/ListIterator;->previous()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lio/sentry/Span;
const/4 v3, 0x0
.line 167
invoke-virtual {v2, v3}, Lio/sentry/Span;->setSpanFinishedCallback(Lio/sentry/SpanFinishedCallback;)V
.line 168
invoke-virtual {v2, p1, v0}, Lio/sentry/Span;->finish(Lio/sentry/SpanStatus;Lio/sentry/SentryDate;)V
goto :goto_0
.line 170
:cond_1
invoke-virtual {p0, p1, v0, p2, p3}, Lio/sentry/SentryTracer;->finish(Lio/sentry/SpanStatus;Lio/sentry/SentryDate;ZLio/sentry/Hint;)V
return-void
.end method
.method public getChildren()Ljava/util/List;
.locals 0
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lio/sentry/Span;",
">;"
}
.end annotation
iget-object p0, p0, Lio/sentry/SentryTracer;->children:Ljava/util/List;
return-object p0
.end method
.method public getContexts()Lio/sentry/protocol/Contexts;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->contexts:Lio/sentry/protocol/Contexts;
return-object p0
.end method
.method public getData(Ljava/lang/String;)Ljava/lang/Object;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 735
invoke-virtual {p0, p1}, Lio/sentry/Span;->getData(Ljava/lang/String;)Ljava/lang/Object;
move-result-object p0
return-object p0
.end method
.method public getData()Ljava/util/Map;
.locals 0
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/Object;",
">;"
}
.end annotation
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 771
invoke-virtual {p0}, Lio/sentry/Span;->getData()Ljava/util/Map;
move-result-object p0
return-object p0
.end method
.method getDeadlineTimeoutTask()Ljava/util/TimerTask;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->deadlineTimeoutTask:Ljava/util/TimerTask;
return-object p0
.end method
.method public getDescription()Ljava/lang/String;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 653
invoke-virtual {p0}, Lio/sentry/Span;->getDescription()Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method public getEventId()Lio/sentry/protocol/SentryId;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->eventId:Lio/sentry/protocol/SentryId;
return-object p0
.end method
.method public getFinishDate()Lio/sentry/SentryDate;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 328
invoke-virtual {p0}, Lio/sentry/Span;->getFinishDate()Lio/sentry/SentryDate;
move-result-object p0
return-object p0
.end method
.method getIdleTimeoutTask()Ljava/util/TimerTask;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->idleTimeoutTask:Ljava/util/TimerTask;
return-object p0
.end method
.method public getLatestActiveSpan()Lio/sentry/Span;
.locals 2
.line 828
new-instance v0, Ljava/util/ArrayList;
iget-object p0, p0, Lio/sentry/SentryTracer;->children:Ljava/util/List;
invoke-direct {v0, p0}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
.line 829
invoke-interface {v0}, Ljava/util/List;->isEmpty()Z
move-result p0
if-nez p0, :cond_1
.line 830
invoke-interface {v0}, Ljava/util/List;->size()I
move-result p0
add-int/lit8 p0, p0, -0x1
:goto_0
if-ltz p0, :cond_1
.line 831
invoke-interface {v0, p0}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lio/sentry/Span;
invoke-virtual {v1}, Lio/sentry/Span;->isFinished()Z
move-result v1
if-nez v1, :cond_0
.line 832
invoke-interface {v0, p0}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object p0
check-cast p0, Lio/sentry/Span;
return-object p0
:cond_0
add-int/lit8 p0, p0, -0x1
goto :goto_0
:cond_1
const/4 p0, 0x0
return-object p0
.end method
.method public getLocalMetricsAggregator()Lio/sentry/metrics/LocalMetricsAggregator;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 903
invoke-virtual {p0}, Lio/sentry/Span;->getLocalMetricsAggregator()Lio/sentry/metrics/LocalMetricsAggregator;
move-result-object p0
return-object p0
.end method
.method public getName()Ljava/lang/String;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->name:Ljava/lang/String;
return-object p0
.end method
.method public getOperation()Ljava/lang/String;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 633
invoke-virtual {p0}, Lio/sentry/Span;->getOperation()Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method getRoot()Lio/sentry/Span;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
return-object p0
.end method
.method public getSamplingDecision()Lio/sentry/TracesSamplingDecision;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 786
invoke-virtual {p0}, Lio/sentry/Span;->getSamplingDecision()Lio/sentry/TracesSamplingDecision;
move-result-object p0
return-object p0
.end method
.method public getSpanContext()Lio/sentry/SpanContext;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 695
invoke-virtual {p0}, Lio/sentry/Span;->getSpanContext()Lio/sentry/SpanContext;
move-result-object p0
return-object p0
.end method
.method public getSpans()Ljava/util/List;
.locals 0
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lio/sentry/Span;",
">;"
}
.end annotation
iget-object p0, p0, Lio/sentry/SentryTracer;->children:Ljava/util/List;
return-object p0
.end method
.method public getStartDate()Lio/sentry/SentryDate;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 323
invoke-virtual {p0}, Lio/sentry/Span;->getStartDate()Lio/sentry/SentryDate;
move-result-object p0
return-object p0
.end method
.method public getStatus()Lio/sentry/SpanStatus;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 673
invoke-virtual {p0}, Lio/sentry/Span;->getStatus()Lio/sentry/SpanStatus;
move-result-object p0
return-object p0
.end method
.method public getTag(Ljava/lang/String;)Ljava/lang/String;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 712
invoke-virtual {p0, p1}, Lio/sentry/Span;->getTag(Ljava/lang/String;)Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method public getThrowable()Ljava/lang/Throwable;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 690
invoke-virtual {p0}, Lio/sentry/Span;->getThrowable()Ljava/lang/Throwable;
move-result-object p0
return-object p0
.end method
.method getTimer()Ljava/util/Timer;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->timer:Ljava/util/Timer;
return-object p0
.end method
.method public getTransactionNameSource()Lio/sentry/protocol/TransactionNameSource;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->transactionNameSource:Lio/sentry/protocol/TransactionNameSource;
return-object p0
.end method
.method isDeadlineTimerRunning()Ljava/util/concurrent/atomic/AtomicBoolean;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->isDeadlineTimerRunning:Ljava/util/concurrent/atomic/AtomicBoolean;
return-object p0
.end method
.method isFinishTimerRunning()Ljava/util/concurrent/atomic/AtomicBoolean;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->isIdleFinishTimerRunning:Ljava/util/concurrent/atomic/AtomicBoolean;
return-object p0
.end method
.method public isFinished()Z
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 717
invoke-virtual {p0}, Lio/sentry/Span;->isFinished()Z
move-result p0
return p0
.end method
.method public isNoOp()Z
.locals 0
const/4 p0, 0x0
return p0
.end method
.method public isProfileSampled()Ljava/lang/Boolean;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 781
invoke-virtual {p0}, Lio/sentry/Span;->isProfileSampled()Ljava/lang/Boolean;
move-result-object p0
return-object p0
.end method
.method public isSampled()Ljava/lang/Boolean;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 776
invoke-virtual {p0}, Lio/sentry/Span;->isSampled()Ljava/lang/Boolean;
move-result-object p0
return-object p0
.end method
.method synthetic lambda$createChild$2$io-sentry-SentryTracer(Lio/sentry/Span;)V
.locals 1
.line 0
iget-object v0, p0, Lio/sentry/SentryTracer;->transactionPerformanceCollector:Lio/sentry/TransactionPerformanceCollector;
if-eqz v0, :cond_0
.line 436
invoke-interface {v0, p1}, Lio/sentry/TransactionPerformanceCollector;->onSpanFinished(Lio/sentry/ISpan;)V
:cond_0
iget-object p1, p0, Lio/sentry/SentryTracer;->finishStatus:Lio/sentry/SentryTracer$FinishStatus;
iget-object v0, p0, Lio/sentry/SentryTracer;->transactionOptions:Lio/sentry/TransactionOptions;
.line 439
invoke-virtual {v0}, Lio/sentry/TransactionOptions;->getIdleTimeout()Ljava/lang/Long;
move-result-object v0
if-eqz v0, :cond_2
iget-object p1, p0, Lio/sentry/SentryTracer;->transactionOptions:Lio/sentry/TransactionOptions;
.line 443
invoke-virtual {p1}, Lio/sentry/TransactionOptions;->isWaitForChildren()Z
move-result p1
if-eqz p1, :cond_1
invoke-direct {p0}, Lio/sentry/SentryTracer;->hasAllChildrenFinished()Z
move-result p1
if-eqz p1, :cond_3
.line 444
:cond_1
invoke-virtual {p0}, Lio/sentry/SentryTracer;->scheduleFinish()V
goto :goto_0
.line 446
:cond_2
invoke-static {p1}, Lio/sentry/SentryTracer$FinishStatus;->access$300(Lio/sentry/SentryTracer$FinishStatus;)Z
move-result v0
if-eqz v0, :cond_3
.line 447
invoke-static {p1}, Lio/sentry/SentryTracer$FinishStatus;->access$100(Lio/sentry/SentryTracer$FinishStatus;)Lio/sentry/SpanStatus;
move-result-object p1
invoke-virtual {p0, p1}, Lio/sentry/SentryTracer;->finish(Lio/sentry/SpanStatus;)V
:cond_3
:goto_0
return-void
.end method
.method synthetic lambda$finish$0$io-sentry-SentryTracer(Lio/sentry/IScope;Lio/sentry/ITransaction;)V
.locals 0
.line 0
if-ne p2, p0, :cond_0
.line 230
invoke-interface {p1}, Lio/sentry/IScope;->clearTransaction()V
:cond_0
return-void
.end method
.method synthetic lambda$finish$1$io-sentry-SentryTracer(Lio/sentry/IScope;)V
.locals 1
.line 227
new-instance v0, Lio/sentry/SentryTracer$$ExternalSyntheticLambda2;
invoke-direct {v0, p0, p1}, Lio/sentry/SentryTracer$$ExternalSyntheticLambda2;-><init>(Lio/sentry/SentryTracer;Lio/sentry/IScope;)V
invoke-interface {p1, v0}, Lio/sentry/IScope;->withTransaction(Lio/sentry/Scope$IWithTransaction;)V
return-void
.end method
.method public scheduleFinish()V
.locals 6
iget-object v0, p0, Lio/sentry/SentryTracer;->timerLock:Ljava/lang/Object;
.line 107
monitor-enter v0
:try_start_0
iget-object v1, p0, Lio/sentry/SentryTracer;->timer:Ljava/util/Timer;
if-eqz v1, :cond_0
iget-object v1, p0, Lio/sentry/SentryTracer;->transactionOptions:Lio/sentry/TransactionOptions;
.line 109
invoke-virtual {v1}, Lio/sentry/TransactionOptions;->getIdleTimeout()Ljava/lang/Long;
move-result-object v1
if-eqz v1, :cond_0
.line 112
invoke-direct {p0}, Lio/sentry/SentryTracer;->cancelIdleTimer()V
iget-object v2, p0, Lio/sentry/SentryTracer;->isIdleFinishTimerRunning:Ljava/util/concurrent/atomic/AtomicBoolean;
const/4 v3, 0x1
.line 113
invoke-virtual {v2, v3}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
.line 114
new-instance v2, Lio/sentry/SentryTracer$1;
invoke-direct {v2, p0}, Lio/sentry/SentryTracer$1;-><init>(Lio/sentry/SentryTracer;)V
iput-object v2, p0, Lio/sentry/SentryTracer;->idleTimeoutTask:Ljava/util/TimerTask;
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_1
:try_start_1
iget-object v2, p0, Lio/sentry/SentryTracer;->timer:Ljava/util/Timer;
iget-object v3, p0, Lio/sentry/SentryTracer;->idleTimeoutTask:Ljava/util/TimerTask;
.line 123
invoke-virtual {v1}, Ljava/lang/Long;->longValue()J
move-result-wide v4
invoke-virtual {v2, v3, v4, v5}, Ljava/util/Timer;->schedule(Ljava/util/TimerTask;J)V
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
goto :goto_0
:catchall_0
move-exception v1
:try_start_2
iget-object v2, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 125
invoke-interface {v2}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object v2
.line 126
invoke-virtual {v2}, Lio/sentry/SentryOptions;->getLogger()Lio/sentry/ILogger;
move-result-object v2
sget-object v3, Lio/sentry/SentryLevel;->WARNING:Lio/sentry/SentryLevel;
const-string v4, "Failed to schedule finish timer"
.line 127
invoke-interface {v2, v3, v4, v1}, Lio/sentry/ILogger;->log(Lio/sentry/SentryLevel;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 130
invoke-direct {p0}, Lio/sentry/SentryTracer;->onIdleTimeoutReached()V
.line 134
:cond_0
:goto_0
monitor-exit v0
return-void
:catchall_1
move-exception p0
monitor-exit v0
:try_end_2
.catchall {:try_start_2 .. :try_end_2} :catchall_1
throw p0
.end method
.method public setContext(Ljava/lang/String;Ljava/lang/Object;)V
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->contexts:Lio/sentry/protocol/Contexts;
.line 882
invoke-virtual {p0, p1, p2}, Lio/sentry/protocol/Contexts;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
return-void
.end method
.method public setData(Ljava/lang/String;Ljava/lang/Object;)V
.locals 1
iget-object v0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 722
invoke-virtual {v0}, Lio/sentry/Span;->isFinished()Z
move-result v0
if-eqz v0, :cond_0
iget-object p0, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 723
invoke-interface {p0}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object p0
.line 724
invoke-virtual {p0}, Lio/sentry/SentryOptions;->getLogger()Lio/sentry/ILogger;
move-result-object p0
sget-object p2, Lio/sentry/SentryLevel;->DEBUG:Lio/sentry/SentryLevel;
const-string v0, "The transaction is already finished. Data %s cannot be set"
filled-new-array {p1}, [Ljava/lang/Object;
move-result-object p1
.line 725
invoke-interface {p0, p2, v0, p1}, Lio/sentry/ILogger;->log(Lio/sentry/SentryLevel;Ljava/lang/String;[Ljava/lang/Object;)V
return-void
:cond_0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 730
invoke-virtual {p0, p1, p2}, Lio/sentry/Span;->setData(Ljava/lang/String;Ljava/lang/Object;)V
return-void
.end method
.method public setDescription(Ljava/lang/String;)V
.locals 2
iget-object v0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 638
invoke-virtual {v0}, Lio/sentry/Span;->isFinished()Z
move-result v0
if-eqz v0, :cond_0
iget-object p0, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 639
invoke-interface {p0}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object p0
.line 640
invoke-virtual {p0}, Lio/sentry/SentryOptions;->getLogger()Lio/sentry/ILogger;
move-result-object p0
sget-object v0, Lio/sentry/SentryLevel;->DEBUG:Lio/sentry/SentryLevel;
const-string v1, "The transaction is already finished. Description %s cannot be set"
filled-new-array {p1}, [Ljava/lang/Object;
move-result-object p1
.line 641
invoke-interface {p0, v0, v1, p1}, Lio/sentry/ILogger;->log(Lio/sentry/SentryLevel;Ljava/lang/String;[Ljava/lang/Object;)V
return-void
:cond_0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 648
invoke-virtual {p0, p1}, Lio/sentry/Span;->setDescription(Ljava/lang/String;)V
return-void
.end method
.method public setMeasurement(Ljava/lang/String;Ljava/lang/Number;)V
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 759
invoke-virtual {p0, p1, p2}, Lio/sentry/Span;->setMeasurement(Ljava/lang/String;Ljava/lang/Number;)V
return-void
.end method
.method public setMeasurement(Ljava/lang/String;Ljava/lang/Number;Lio/sentry/MeasurementUnit;)V
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 767
invoke-virtual {p0, p1, p2, p3}, Lio/sentry/Span;->setMeasurement(Ljava/lang/String;Ljava/lang/Number;Lio/sentry/MeasurementUnit;)V
return-void
.end method
.method public setMeasurementFromChild(Ljava/lang/String;Ljava/lang/Number;)V
.locals 1
iget-object v0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 741
invoke-virtual {v0}, Lio/sentry/Span;->getMeasurements()Ljava/util/Map;
move-result-object v0
invoke-interface {v0, p1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_0
.line 742
invoke-virtual {p0, p1, p2}, Lio/sentry/SentryTracer;->setMeasurement(Ljava/lang/String;Ljava/lang/Number;)V
:cond_0
return-void
.end method
.method public setMeasurementFromChild(Ljava/lang/String;Ljava/lang/Number;Lio/sentry/MeasurementUnit;)V
.locals 1
iget-object v0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 752
invoke-virtual {v0}, Lio/sentry/Span;->getMeasurements()Ljava/util/Map;
move-result-object v0
invoke-interface {v0, p1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_0
.line 753
invoke-virtual {p0, p1, p2, p3}, Lio/sentry/SentryTracer;->setMeasurement(Ljava/lang/String;Ljava/lang/Number;Lio/sentry/MeasurementUnit;)V
:cond_0
return-void
.end method
.method public setName(Ljava/lang/String;)V
.locals 1
.line 791
sget-object v0, Lio/sentry/protocol/TransactionNameSource;->CUSTOM:Lio/sentry/protocol/TransactionNameSource;
invoke-virtual {p0, p1, v0}, Lio/sentry/SentryTracer;->setName(Ljava/lang/String;Lio/sentry/protocol/TransactionNameSource;)V
return-void
.end method
.method public setName(Ljava/lang/String;Lio/sentry/protocol/TransactionNameSource;)V
.locals 1
iget-object v0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 797
invoke-virtual {v0}, Lio/sentry/Span;->isFinished()Z
move-result v0
if-eqz v0, :cond_0
iget-object p0, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 798
invoke-interface {p0}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object p0
.line 799
invoke-virtual {p0}, Lio/sentry/SentryOptions;->getLogger()Lio/sentry/ILogger;
move-result-object p0
sget-object p2, Lio/sentry/SentryLevel;->DEBUG:Lio/sentry/SentryLevel;
const-string v0, "The transaction is already finished. Name %s cannot be set"
filled-new-array {p1}, [Ljava/lang/Object;
move-result-object p1
.line 800
invoke-interface {p0, p2, v0, p1}, Lio/sentry/ILogger;->log(Lio/sentry/SentryLevel;Ljava/lang/String;[Ljava/lang/Object;)V
return-void
:cond_0
iput-object p1, p0, Lio/sentry/SentryTracer;->name:Ljava/lang/String;
iput-object p2, p0, Lio/sentry/SentryTracer;->transactionNameSource:Lio/sentry/protocol/TransactionNameSource;
return-void
.end method
.method public setOperation(Ljava/lang/String;)V
.locals 2
iget-object v0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 618
invoke-virtual {v0}, Lio/sentry/Span;->isFinished()Z
move-result v0
if-eqz v0, :cond_0
iget-object p0, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 619
invoke-interface {p0}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object p0
.line 620
invoke-virtual {p0}, Lio/sentry/SentryOptions;->getLogger()Lio/sentry/ILogger;
move-result-object p0
sget-object v0, Lio/sentry/SentryLevel;->DEBUG:Lio/sentry/SentryLevel;
const-string v1, "The transaction is already finished. Operation %s cannot be set"
filled-new-array {p1}, [Ljava/lang/Object;
move-result-object p1
.line 621
invoke-interface {p0, v0, v1, p1}, Lio/sentry/ILogger;->log(Lio/sentry/SentryLevel;Ljava/lang/String;[Ljava/lang/Object;)V
return-void
:cond_0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 628
invoke-virtual {p0, p1}, Lio/sentry/Span;->setOperation(Ljava/lang/String;)V
return-void
.end method
.method public setStatus(Lio/sentry/SpanStatus;)V
.locals 3
iget-object v0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 658
invoke-virtual {v0}, Lio/sentry/Span;->isFinished()Z
move-result v0
if-eqz v0, :cond_1
iget-object p0, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 659
invoke-interface {p0}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object p0
.line 660
invoke-virtual {p0}, Lio/sentry/SentryOptions;->getLogger()Lio/sentry/ILogger;
move-result-object p0
sget-object v0, Lio/sentry/SentryLevel;->DEBUG:Lio/sentry/SentryLevel;
const/4 v1, 0x1
new-array v1, v1, [Ljava/lang/Object;
if-nez p1, :cond_0
const-string p1, "null"
goto :goto_0
.line 664
:cond_0
invoke-virtual {p1}, Lio/sentry/SpanStatus;->name()Ljava/lang/String;
move-result-object p1
:goto_0
const/4 v2, 0x0
aput-object p1, v1, v2
const-string p1, "The transaction is already finished. Status %s cannot be set"
.line 661
invoke-interface {p0, v0, p1, v1}, Lio/sentry/ILogger;->log(Lio/sentry/SentryLevel;Ljava/lang/String;[Ljava/lang/Object;)V
return-void
:cond_1
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 668
invoke-virtual {p0, p1}, Lio/sentry/Span;->setStatus(Lio/sentry/SpanStatus;)V
return-void
.end method
.method public setTag(Ljava/lang/String;Ljava/lang/String;)V
.locals 1
iget-object v0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 700
invoke-virtual {v0}, Lio/sentry/Span;->isFinished()Z
move-result v0
if-eqz v0, :cond_0
iget-object p0, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 701
invoke-interface {p0}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object p0
.line 702
invoke-virtual {p0}, Lio/sentry/SentryOptions;->getLogger()Lio/sentry/ILogger;
move-result-object p0
sget-object p2, Lio/sentry/SentryLevel;->DEBUG:Lio/sentry/SentryLevel;
const-string v0, "The transaction is already finished. Tag %s cannot be set"
filled-new-array {p1}, [Ljava/lang/Object;
move-result-object p1
.line 703
invoke-interface {p0, p2, v0, p1}, Lio/sentry/ILogger;->log(Lio/sentry/SentryLevel;Ljava/lang/String;[Ljava/lang/Object;)V
return-void
:cond_0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 707
invoke-virtual {p0, p1, p2}, Lio/sentry/Span;->setTag(Ljava/lang/String;Ljava/lang/String;)V
return-void
.end method
.method public setThrowable(Ljava/lang/Throwable;)V
.locals 2
iget-object v0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 678
invoke-virtual {v0}, Lio/sentry/Span;->isFinished()Z
move-result v0
if-eqz v0, :cond_0
iget-object p0, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 679
invoke-interface {p0}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object p0
.line 680
invoke-virtual {p0}, Lio/sentry/SentryOptions;->getLogger()Lio/sentry/ILogger;
move-result-object p0
sget-object p1, Lio/sentry/SentryLevel;->DEBUG:Lio/sentry/SentryLevel;
const/4 v0, 0x0
new-array v0, v0, [Ljava/lang/Object;
const-string v1, "The transaction is already finished. Throwable cannot be set"
.line 681
invoke-interface {p0, p1, v1, v0}, Lio/sentry/ILogger;->log(Lio/sentry/SentryLevel;Ljava/lang/String;[Ljava/lang/Object;)V
return-void
:cond_0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 685
invoke-virtual {p0, p1}, Lio/sentry/Span;->setThrowable(Ljava/lang/Throwable;)V
return-void
.end method
.method startChild(Lio/sentry/SpanId;Ljava/lang/String;Ljava/lang/String;)Lio/sentry/ISpan;
.locals 1
.line 344
new-instance v0, Lio/sentry/SpanOptions;
invoke-direct {v0}, Lio/sentry/SpanOptions;-><init>()V
invoke-virtual {p0, p1, p2, p3, v0}, Lio/sentry/SentryTracer;->startChild(Lio/sentry/SpanId;Ljava/lang/String;Ljava/lang/String;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
move-result-object p0
return-object p0
.end method
.method startChild(Lio/sentry/SpanId;Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;)Lio/sentry/ISpan;
.locals 7
.line 372
new-instance v6, Lio/sentry/SpanOptions;
invoke-direct {v6}, Lio/sentry/SpanOptions;-><init>()V
move-object v0, p0
move-object v1, p1
move-object v2, p2
move-object v3, p3
move-object v4, p4
move-object v5, p5
invoke-direct/range {v0 .. v6}, Lio/sentry/SentryTracer;->createChild(Lio/sentry/SpanId;Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
move-result-object p0
return-object p0
.end method
.method startChild(Lio/sentry/SpanId;Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
.locals 0
.line 384
invoke-direct/range {p0 .. p6}, Lio/sentry/SentryTracer;->createChild(Lio/sentry/SpanId;Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
move-result-object p0
return-object p0
.end method
.method startChild(Lio/sentry/SpanId;Ljava/lang/String;Ljava/lang/String;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
.locals 0
.line 362
invoke-direct {p0, p1, p2, p3, p4}, Lio/sentry/SentryTracer;->createChild(Lio/sentry/SpanId;Ljava/lang/String;Ljava/lang/String;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
move-result-object p0
return-object p0
.end method
.method public startChild(Ljava/lang/String;)Lio/sentry/ISpan;
.locals 2
const/4 v0, 0x0
.line 476
move-object v1, v0
check-cast v1, Ljava/lang/String;
invoke-virtual {p0, p1, v0}, Lio/sentry/SentryTracer;->startChild(Ljava/lang/String;Ljava/lang/String;)Lio/sentry/ISpan;
move-result-object p0
return-object p0
.end method
.method public startChild(Ljava/lang/String;Ljava/lang/String;)Lio/sentry/ISpan;
.locals 6
const/4 v3, 0x0
.line 509
sget-object v4, Lio/sentry/Instrumenter;->SENTRY:Lio/sentry/Instrumenter;
new-instance v5, Lio/sentry/SpanOptions;
invoke-direct {v5}, Lio/sentry/SpanOptions;-><init>()V
move-object v0, p0
move-object v1, p1
move-object v2, p2
invoke-virtual/range {v0 .. v5}, Lio/sentry/SentryTracer;->startChild(Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
move-result-object p0
return-object p0
.end method
.method public startChild(Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;)Lio/sentry/ISpan;
.locals 6
.line 503
sget-object v4, Lio/sentry/Instrumenter;->SENTRY:Lio/sentry/Instrumenter;
new-instance v5, Lio/sentry/SpanOptions;
invoke-direct {v5}, Lio/sentry/SpanOptions;-><init>()V
move-object v0, p0
move-object v1, p1
move-object v2, p2
move-object v3, p3
invoke-direct/range {v0 .. v5}, Lio/sentry/SentryTracer;->createChild(Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
move-result-object p0
return-object p0
.end method
.method public startChild(Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;)Lio/sentry/ISpan;
.locals 6
.line 485
new-instance v5, Lio/sentry/SpanOptions;
invoke-direct {v5}, Lio/sentry/SpanOptions;-><init>()V
move-object v0, p0
move-object v1, p1
move-object v2, p2
move-object v3, p3
move-object v4, p4
invoke-virtual/range {v0 .. v5}, Lio/sentry/SentryTracer;->startChild(Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
move-result-object p0
return-object p0
.end method
.method public startChild(Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
.locals 0
.line 495
invoke-direct/range {p0 .. p5}, Lio/sentry/SentryTracer;->createChild(Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
move-result-object p0
return-object p0
.end method
.method public startChild(Ljava/lang/String;Ljava/lang/String;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
.locals 6
const/4 v3, 0x0
.line 515
sget-object v4, Lio/sentry/Instrumenter;->SENTRY:Lio/sentry/Instrumenter;
move-object v0, p0
move-object v1, p1
move-object v2, p2
move-object v5, p3
invoke-direct/range {v0 .. v5}, Lio/sentry/SentryTracer;->createChild(Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan;
move-result-object p0
return-object p0
.end method
.method public toBaggageHeader(Ljava/util/List;)Lio/sentry/BaggageHeader;
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"Ljava/lang/String;",
">;)",
"Lio/sentry/BaggageHeader;"
}
.end annotation
iget-object v0, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 595
invoke-interface {v0}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object v0
invoke-virtual {v0}, Lio/sentry/SentryOptions;->isTraceSampling()Z
move-result v0
if-eqz v0, :cond_0
.line 596
invoke-direct {p0}, Lio/sentry/SentryTracer;->updateBaggageValues()V
iget-object p0, p0, Lio/sentry/SentryTracer;->baggage:Lio/sentry/Baggage;
.line 598
invoke-static {p0, p1}, Lio/sentry/BaggageHeader;->fromBaggageAndOutgoingHeader(Lio/sentry/Baggage;Ljava/util/List;)Lio/sentry/BaggageHeader;
move-result-object p0
return-object p0
:cond_0
const/4 p0, 0x0
return-object p0
.end method
.method public toSentryTrace()Lio/sentry/SentryTraceHeader;
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 548
invoke-virtual {p0}, Lio/sentry/Span;->toSentryTrace()Lio/sentry/SentryTraceHeader;
move-result-object p0
return-object p0
.end method
.method public traceContext()Lio/sentry/TraceContext;
.locals 1
iget-object v0, p0, Lio/sentry/SentryTracer;->hub:Lio/sentry/IHub;
.line 570
invoke-interface {v0}, Lio/sentry/IHub;->getOptions()Lio/sentry/SentryOptions;
move-result-object v0
invoke-virtual {v0}, Lio/sentry/SentryOptions;->isTraceSampling()Z
move-result v0
if-eqz v0, :cond_0
.line 571
invoke-direct {p0}, Lio/sentry/SentryTracer;->updateBaggageValues()V
iget-object p0, p0, Lio/sentry/SentryTracer;->baggage:Lio/sentry/Baggage;
.line 572
invoke-virtual {p0}, Lio/sentry/Baggage;->toTraceContext()Lio/sentry/TraceContext;
move-result-object p0
return-object p0
:cond_0
const/4 p0, 0x0
return-object p0
.end method
.method public updateEndDate(Lio/sentry/SentryDate;)Z
.locals 0
iget-object p0, p0, Lio/sentry/SentryTracer;->root:Lio/sentry/Span;
.line 893
invoke-virtual {p0, p1}, Lio/sentry/Span;->updateEndDate(Lio/sentry/SentryDate;)Z
move-result p0
return p0
.end method