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 40
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 30
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 34
def publish_sdam_event(topic, event)
  return unless monitoring?

  monitoring.succeeded(topic, event)
end

Private Instance Methods

command_completed(result, address, operation_id, payload, duration, started_event:, server_connection_id: nil, service_id: nil ) click to toggle source
# File lib/mongo/monitoring/publishable.rb, line 65
def command_completed(result, address, operation_id, payload, duration,
  started_event:, server_connection_id: nil, service_id: nil
)
  document = result ? (result.documents || []).first : nil
  if document && (document['ok'] && document['ok'] != 1 || document.key?('$err'))
    parser = Error::Parser.new(document)
    command_failed(document, address, operation_id,
      payload, parser.message, duration,
      started_event: started_event, server_connection_id: server_connection_id,
      service_id: service_id,
    )
  else
    command_succeeded(result, address, operation_id, payload, duration,
      started_event: started_event, server_connection_id: server_connection_id,
      service_id: service_id,
    )
  end
end
command_failed(failure, address, operation_id, payload, message, duration, started_event:, server_connection_id: nil, service_id: nil ) click to toggle source
# File lib/mongo/monitoring/publishable.rb, line 102
def command_failed(failure, address, operation_id, payload, message, duration,
  started_event:, server_connection_id: nil, service_id: nil
)
  monitoring.failed(
    Monitoring::COMMAND,
    Event::CommandFailed.generate(address, operation_id, payload,
      message, failure, duration,
      started_event: started_event,
      server_connection_id: server_connection_id,
      service_id: service_id,
    )
  )
end
command_started(address, operation_id, payload, socket_object_id: nil, connection_id: nil, connection_generation: nil, server_connection_id: nil, service_id: nil ) click to toggle source
# File lib/mongo/monitoring/publishable.rb, line 48
def command_started(address, operation_id, payload,
  socket_object_id: nil, connection_id: nil, connection_generation: nil,
  server_connection_id: nil, service_id: nil
)
  event = Event::CommandStarted.generate(address, operation_id, payload,
      socket_object_id: socket_object_id, connection_id: connection_id,
      connection_generation: connection_generation,
      server_connection_id: server_connection_id,
      service_id: service_id,
    )
  monitoring.started(
    Monitoring::COMMAND,
    event
  )
  event
end
command_succeeded(result, address, operation_id, payload, duration, started_event:, server_connection_id: nil, service_id: nil ) click to toggle source
# File lib/mongo/monitoring/publishable.rb, line 84
def command_succeeded(result, address, operation_id, payload, duration,
  started_event:, server_connection_id: nil, service_id: nil
)
  monitoring.succeeded(
    Monitoring::COMMAND,
    Event::CommandSucceeded.generate(
      address,
      operation_id,
      payload,
      result ? result.payload : nil,
      duration,
      started_event: started_event,
      server_connection_id: server_connection_id,
      service_id: service_id,
    )
  )
end
duration(start) click to toggle source
# File lib/mongo/monitoring/publishable.rb, line 116
def duration(start)
  Time.now - start
end
monitoring?() click to toggle source
# File lib/mongo/monitoring/publishable.rb, line 120
def monitoring?
  options[:monitoring] != false
end