Sha256: 9710023c2c1ce853cd41a55c51ab58774bf0c50c4331ec2ee456a6a7b9789a5e
Contents?: true
Size: 1.33 KB
Versions: 2
Compression:
Stored size: 1.33 KB
Contents
# typed: true require 'datadog/appsec' require 'datadog/appsec/reactive/engine' module Datadog module AppSec module Reactive # Reactive Engine nested operation tracking class Operation attr_reader :reactive, :parent, :name def initialize(name, parent = nil, reactive_engine = nil) Datadog.logger.debug { "operation: #{name} initialize" } @name = name @parent = parent @reactive = reactive_engine || parent && parent.reactive || Reactive::Engine.new # TODO: concurrent store # TODO: constant Thread.current[:datadog_security_active_operation] = self yield self if block_given? ensure finalize end # TODO: use structs instead of an arg splat def subscribe(*addresses, &block) reactive.subscribe(*addresses, &block) end def publish(address, data) reactive.publish(address, data) end def finalize Datadog.logger.debug { "operation: #{name} finalize" } Thread.current[:datadog_security_active_operation] = parent end class << self def active Thread.current[:datadog_security_active_operation] end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ddtrace-1.0.0 | lib/datadog/appsec/reactive/operation.rb |
ddtrace-1.0.0.beta2 | lib/datadog/appsec/reactive/operation.rb |