module Annotation
A mechanism for annotating fibers.
Definitions
def initialize(annotation: nil, **options, &block)
Annotate the current fiber with the given annotation.
Signature
-
parameter
annotation
Object
The annotation to set.
Implementation
def initialize(annotation: nil, **options, &block)
@annotation = annotation
super(**options, &block)
end
attr_accessor :annotation
Get the current annotation.
Signature
-
returns
Object
The current annotation.
def annotate(annotation)
Annotate the current fiber with the given annotation.
If a block is given, the annotation is set for the duration of the block and then restored to the previous value.
The block form of this method should only be invoked on the current fiber.
Signature
-
parameter
annotation
Object
The annotation to set.
-
yields
{}
The block to execute with the given annotation.
-
returns
Object
The return value of the block.
Implementation
def annotate(annotation)
if block_given?
raise "Cannot annotation a different fiber!" unless Fiber.current == self
begin
current_annotation = @annotation
@annotation = annotation
return yield
ensure
@annotation = current_annotation
end
else
@annotation = annotation
end
end