模块:Mongo::Operation::Executable Private
Overview
该模块是私有 API 的一部分。 您应尽可能避免使用此模块,因为它将来可能会被删除或更改。
操作的共享可执行行为。
实例属性摘要折叠
-
#context ⇒ Operation::Context | nil
private
用于执行此操作的操作上下文。
实例方法摘要折叠
- # do_execute (connection, context, options = {}) ⇒ 对象 private
- #execute (connection, context:, options: {}) ⇒ 对象 private
实例属性详细信息
#context ⇒ Operation::Context | nil
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回用于执行此操作的操作上下文。
33 34 35 |
# File 'lib/ Mongo/operation/shared/executable.rb', line 33 def 上下文 @context end |
实例方法详细信息
# do_execute (connection, context, options = {}) ⇒对象
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/ Mongo/operation/shared/executable.rb', line 35 def do_execute(连接, 上下文, = {}) # 将上下文保存在实例上,以避免将其作为 # 每个方法的参数。 有许多传统方法 # 仍然接受它作为参数,暂时保持原样 # 最大限度地减少此更改的影响。 展望未来,可能是 # 合理地重构内容,以便改用此已保存的引用。 @context = 上下文 会话&。Materialize_if_needed unpin_maybe(会话, 连接) do add_error_labels(连接, 上下文) do check_for_network_error 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 会话.快照? && !会话. 会话. = 结果. end end if 结果.has_cursor_id? && 连接.描述.load_balancer? then if 结果.cursor_id == 0 连接.取消固定 else 连接.销 end end process_result(结果, 连接) end end end end end end |
#execute (connection, context:, options: {}) ⇒对象
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/ Mongo/operation/shared/executable.rb', line 88 def 执行(连接, 上下文:, 选项: {}) if Lint.已启用? 除非 连接.is_a?(mongo::服务器::连接) 提高 错误::LintError, "连接参数的类型错误: #{ connection } " end end do_execute(连接, 上下文, ).点击 do |结果| validate_result(结果, 连接, 上下文) end end |