模块:Mongo::Operation::Executable Private

包括:
ResponseHandling
包含在:
OpMsgBase
定义于:
build/Ruby-driver-v 2.19 /lib/mongo/operation/shared/executable.rb

Overview

该模块是私有 API 的一部分。 您应尽可能避免使用此模块,因为它将来可能会被删除或更改。

操作的共享可执行行为。

由于:

  • 2.5.2

实例方法摘要折叠

实例方法详细信息

# do_execute (connection, context, options = {}) ⇒对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.5.2



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'build/Ruby-driver-v 2.19 /lib/mongo/operation/shared/executable.rb', 第29行

def do_execute(连接, 上下文, 选项 = {})
  会话&。Materialize_if_needed
  unpin_maybe(会话, 连接) do
    add_error_labels(连接, 上下文) do
      add_server_diagnostics(连接) do
        get_result(连接, 上下文, 选项).点击 do |结果|
          if 会话
            if 会话.in_transaction? &&
              连接.描述.load_balancer?
            then
              if 会话.pinned_connection_global_id
                除非 会话.pinned_connection_global_id == 连接.global_id
                  提高(
                    错误::内部驱动程序错误,
                    " 预期操作会使用连接 #{ session .pinned_connection_global_id } ,但实际使用了 # { connection . global_id } "
                  )
                end
              else
                会话.pin_to_connection(连接.global_id)
                连接.
              end
            end

            if 会话.快照? && !会话.snapshot_timestamp
              会话.snapshot_timestamp = 结果.snapshot_timestamp
            end
          end

          if 结果.has_cursor_id? &&
            连接.描述.load_balancer?
          then
            if 结果.cursor_id == 0
              连接.取消固定
            else
              连接.
            end
          end
          process_result(结果, 连接)
        end
      end
    end
  end
end

#execute (connection, context:, options: {}) ⇒对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.5.2



73
74
75
76
77
78
79
80
81
82
83
# File 'build/Ruby-driver-v 2.19 /lib/mongo/operation/shared/executable.rb', 第73行

def 执行(连接, 上下文:, 选项: {})
  if Lint.已启用?
    除非 连接.is_a?(mongo::服务器::连接)
      提高 错误::LintError, "连接参数的类型错误: #{ connection } "
    end
  end

  do_execute(连接, 上下文, 选项).点击 do |结果|
    validate_result(结果, 连接, 上下文)
  end
end