class Dry::Monitor::Notifications

def initialize(id, clock: CLOCK)

def initialize(id, clock: CLOCK)
  @id = id
  @clock = clock
end

def instrument(event_id, payload = EMPTY_HASH, &block)

def instrument(event_id, payload = EMPTY_HASH, &block)
  result, time = @clock.measure(&block) if block_given?
  process(event_id, payload) do |event, listener|
    if time
      listener.(event.payload(payload.merge(time: time)))
    else
      listener.(event)
    end
  end
  result
end

def start(event_id, payload)

def start(event_id, payload)
  instrument(event_id, payload)
end

def stop(event_id, payload)

def stop(event_id, payload)
  instrument(event_id, payload)
end