模块:Mongo::Operation::Timed Private

包含在:
OpMsgBase
定义于:
lib/ Mongo/operation/shared/timed.rb

Overview

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

定义具有客户端操作超时 (CSOT) 规范所描述的默认超时行为的操作的行为。

实例方法摘要折叠

实例方法详细信息

# apply_relevant_timeups_to (spec, connection) ⇒ 哈希

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

如果超时处于活动状态(由当前上下文定义)且尚未过期,请将 :maxTimeMS 添加到规范中。

参数:

  • spec (哈希)

    要修改的规范

  • 连接 (连接)

    用于执行操作的连接

返回:

  • (哈希)

    规范



22
23
24
25
26
27
28
29
# File 'lib/ Mongo/operation/shared/timed.rb', line 22

def apply_relevant_timeups_to(spec, 连接)
  with_max_time(连接) do |max_time_sec|
    return spec if max_time_sec.nil?
    return spec if 连接.描述.mongocryptd?

    spec.点击 { spec[:maxTimeMS] = (max_time_sec * 1 _ 000).to_i }
  end
end

# with_max_time (connection) ⇒ 哈希

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

一种辅助方法,用于计算剩余超时时间(以秒为单位)并将其生成关联的区块。 如果不存在超时,则返回 nil。 如果超时,则引发 Mongo::Error::TimeoutError。

参数:

  • 连接 (连接)

    用于执行操作的连接

返回:

  • (哈希)

    屈服于区块的结果(必须是哈希)



40
41
42
43
44
45
46
47
48
49
# File 'lib/ Mongo/operation/shared/timed.rb', line 40

def with_max_time(连接)
  if 上下文&。超时?
    max_time_sec = 上下文.剩余超时秒数 - 连接.server.minimum_round_trip_time
    提高 mongo::错误::超时错误 if max_time_sec <= 0

    产量 max_time_sec
  else
    产量 nil
  end
end