1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
# frozen_string_literal: true
module Sentry
class ThreadsInterface
# @param crashed [Boolean]
# @param stacktrace [Array]
def initialize(crashed: false, stacktrace: nil)
@id = Thread.current.object_id
@name = Thread.current.name
@current = true
@crashed = crashed
@stacktrace = stacktrace
end
# @return [Hash]
def to_hash
{
values: [
{
id: @id,
name: @name,
crashed: @crashed,
current: @current,
stacktrace: @stacktrace&.to_hash
}
]
}
end
# Builds the ThreadsInterface with given backtrace and stacktrace_builder.
# Patch this method if you want to change a threads interface's stacktrace frames.
# @see StacktraceBuilder.build
# @param backtrace [Array]
# @param stacktrace_builder [StacktraceBuilder]
# @param crashed [Hash]
# @return [ThreadsInterface]
def self.build(backtrace:, stacktrace_builder:, **options)
stacktrace = stacktrace_builder.build(backtrace: backtrace) if backtrace
new(**options, stacktrace: stacktrace)
end
end
end
|