class Mongo::Monitoring::Event::CommandSucceeded
Event
that is fired when a command operation succeeds.
@since 2.1.0
Attributes
@return [ Server::Address ] address The server address.
@return [ String ] command_name
The name of the command.
@return [ String ] database_name
The name of the database.
@return [ Float ] duration The duration of the event.
@return [ Integer ] operation_id
The operation id.
@return [ BSON::Document ] reply The command reply.
@return [ Integer ] request_id
The request id.
Public Class Methods
Create the event from a wire protocol message payload.
@example Create the event.
CommandSucceeded.generate(address, 1, command_payload, reply_payload, 0.5)
@param [ Server::Address ] address The server address. @param [ Integer ] operation_id
The operation id. @param [ Hash ] command_payload The command message payload. @param [ Hash ] reply_payload The reply message payload. @param [ Float ] duration The duration of the command in seconds.
@return [ CommandCompleted ] The event.
@since 2.1.0 @api private
# File lib/mongo/monitoring/event/command_succeeded.rb, line 85 def self.generate(address, operation_id, command_payload, reply_payload, duration) new( command_payload[:command_name], command_payload[:database_name], address, command_payload[:request_id], operation_id, generate_reply(command_payload, reply_payload), duration ) end
Create the new event.
@example Create the event.
@param [ String ] command_name
The name of the command. @param [ String ] database_name
The database name. @param [ Server::Address ] address The server address. @param [ Integer ] request_id
The request id. @param [ Integer ] operation_id
The operation id. @param [ BSON::Document ] reply The command reply. @param [ Float ] duration The duration the command took in seconds.
@since 2.1.0 @api private
# File lib/mongo/monitoring/event/command_succeeded.rb, line 60 def initialize(command_name, database_name, address, request_id, operation_id, reply, duration) @command_name = command_name.to_s @database_name = database_name @address = address @request_id = request_id @operation_id = operation_id @reply = redacted(command_name, reply) @duration = duration end
Private Class Methods
# File lib/mongo/monitoring/event/command_succeeded.rb, line 99 def self.generate_reply(command_payload, reply_payload) if reply_payload reply = reply_payload[:reply] if cursor = reply[:cursor] if !cursor.key?(Collection::NS) cursor.merge!(Collection::NS => namespace(command_payload)) end end reply else BSON::Document.new(Operation::Result::OK => 1) end end
# File lib/mongo/monitoring/event/command_succeeded.rb, line 113 def self.namespace(payload) command = payload[:command] "#{payload[:database_name]}.#{command[:collection] || command.values.first}" end