module Mongo::Operation::Executable

Shared executable behavior of operations.

@since 2.5.2

Public Instance Methods

execute(server) click to toggle source
# File lib/mongo/operation/shared/executable.rb, line 23
def execute(server)
  result = get_result(server)
  process_result(result, server)
  result.validate!
end

Private Instance Methods

dispatch_message(server) click to toggle source

Returns a Protocol::Message or nil

# File lib/mongo/operation/shared/executable.rb, line 40
def dispatch_message(server)
  server.with_connection do |connection|
    connection.dispatch([ message(server) ], operation_id)
  end
end
get_result(server) click to toggle source
# File lib/mongo/operation/shared/executable.rb, line 35
def get_result(server)
  result_class.new(dispatch_message(server))
end
process_result(result, server) click to toggle source
# File lib/mongo/operation/shared/executable.rb, line 46
def process_result(result, server)
  server.update_cluster_time(result)
  if result.not_master? || result.node_recovering?
    server.unknown!
    server.monitor.scan_semaphore.signal
  end
  session.process(result) if session
  result
end
result_class() click to toggle source
# File lib/mongo/operation/shared/executable.rb, line 31
def result_class
  Result
end