module Mongo::Monitoring::Publishable

Defines behavior for an object that can publish monitoring events.

@since 2.1.0

Attributes

monitoring[R]

@return [ Monitoring ] monitoring The monitoring.

Public Instance Methods

publish_cmap_event(event) click to toggle source
# File lib/mongo/monitoring/publishable.rb, line 39
def publish_cmap_event(event)
  return unless monitoring?

  monitoring.published(Monitoring::CONNECTION_POOL, event)
end
publish_event(topic, event) click to toggle source

@deprecated

# File lib/mongo/monitoring/publishable.rb, line 28
def publish_event(topic, event)
  monitoring.succeeded(topic, event)
end
publish_sdam_event(topic, event) click to toggle source
# File lib/mongo/monitoring/publishable.rb, line 32
def publish_sdam_event(topic, event)
  return unless monitoring?

  log_debug("EVENT: #{event.summary}")
  monitoring.succeeded(topic, event)
end

Private Instance Methods

command_completed(result, address, operation_id, payload, duration) click to toggle source
# File lib/mongo/monitoring/publishable.rb, line 57
def command_completed(result, address, operation_id, payload, duration)
  document = result ? (result.documents || []).first : nil
  if error?(document)
    parser = Error::Parser.new(document)
    command_failed(document, address, operation_id, payload, parser.message, duration)
  else
    command_succeeded(result, address, operation_id, payload, duration)
  end
end
command_failed(failure, address, operation_id, payload, message, duration) click to toggle source
# File lib/mongo/monitoring/publishable.rb, line 80
def command_failed(failure, address, operation_id, payload, message, duration)
  monitoring.failed(
    Monitoring::COMMAND,
    Event::CommandFailed.generate(address, operation_id, payload, message, failure, duration)
  )
end
command_started(address, operation_id, payload, socket_object_id: nil, connection_id: nil ) click to toggle source
# File lib/mongo/monitoring/publishable.rb, line 47
def command_started(address, operation_id, payload,
  socket_object_id: nil, connection_id: nil
)
  monitoring.started(
    Monitoring::COMMAND,
    Event::CommandStarted.generate(address, operation_id, payload,
      socket_object_id: socket_object_id, connection_id: connection_id)
  )
end
command_succeeded(result, address, operation_id, payload, duration) click to toggle source
# File lib/mongo/monitoring/publishable.rb, line 67
def command_succeeded(result, address, operation_id, payload, duration)
  monitoring.succeeded(
    Monitoring::COMMAND,
    Event::CommandSucceeded.generate(
      address,
      operation_id,
      payload,
      result ? result.payload : nil,
      duration
    )
  )
end
duration(start) click to toggle source
# File lib/mongo/monitoring/publishable.rb, line 87
def duration(start)
  Time.now - start
end
error?(document) click to toggle source
# File lib/mongo/monitoring/publishable.rb, line 91
def error?(document)
  document && (document['ok'] == 0 || document.key?('$err'))
end
monitoring?() click to toggle source
# File lib/mongo/monitoring/publishable.rb, line 95
def monitoring?
  options[:monitoring] != false
end