类:Mongo::Operation::Context Private

继承:
对象
  • 对象
显示全部
定义于:
构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb

Overview

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

操作的上下文。

在单个容器中保存有关操作执行决策所需的各种对象,并为所包含的对象提供门面方法。

上下文包含操作的参数,因此在准备操作时,上下文中的任何内容都不应更改。 处理操作结果时,上下文返回的数据可能会更改(例如,由于事务中止),但此时该操作不应再从上下文中读取任何内容。 由于上下文数据在操作执行期间可能会发生变化,因此上下文对象不应为多个操作重复使用。

实例属性摘要折叠

实例方法摘要折叠

构造函数详情

#initialize (客户端: nil, session: nil, connection_global_id: nil, options: nil) ⇒上下文

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

返回 Context 的新实例。



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第38行

def 初始化(客户端: nil, 会话: nil, connection_global_id: nil, 选项: nil)
  if 选项
    if 客户端
      提高 ArgumentError, '不能同时指定客户端和选项'
    end

    if 会话
      提高 ArgumentError, '不能同时指定会话和选项'
    end
  end

  if connection_global_id && 会话&。pinned_connection_global_id
    提高 ArgumentError, '当会话已固定到连接时,尝试将上下文固定到连接。 '
  end

  @client = 客户端
  @session = 会话
  @connection_global_id = connection_global_id
  @options = 选项
end

实例属性详细信息

#客户端对象(只读)

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



59
60
61
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第59行

def 客户端
  @client
end

# options对象(只读)

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



61
62
63
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第61行

def 选项
  @options
end

# session对象(只读)

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



60
61
62
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第60行

def 会话
  @session
end

实例方法详细信息

# aborting_transaction?布尔

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

返回:

  • 布尔值


79
80
81
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第79行

def aborting_transaction?
  in_transaction? && 会话.aborting_transaction?
end

# any_retry_writes?布尔

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

返回:

  • 布尔值


91
92
93
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第91行

def any_retry_writes?
  modern_retry_writes? || legacy_retry_writes?
end

# committing_transaction?布尔

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

返回:

  • 布尔值


75
76
77
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第75行

def committing_transaction?
  in_transaction? && 会话.committing_transaction?
end

# connection_global_id对象

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



63
64
65
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第63行

def connection_global_id
  @connection_global_id || 会话&。pinned_connection_global_id
end

#解密?布尔

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

返回:

  • 布尔值


125
126
127
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第125行

def 解密?
  !!客户端&。加密器
end

# encrypt?布尔

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

返回:

  • 布尔值


121
122
123
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第121行

def 加密?
  客户端&。加密器&。加密? || false
end

# Encrypter对象

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



129
130
131
132
133
134
135
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第129行

def 加密器
  if 客户端&。加密器
    客户端.加密器
  else
    提高 错误::内部驱动程序错误, '仅当要执行加密时才应访问加密器'
  end
end

# in_transaction?布尔

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

返回:

  • 布尔值


67
68
69
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第67行

def in_transaction?
  会话&。in_transaction? || false
end

#legacy_retry_writes?布尔

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

返回:

  • 布尔值


87
88
89
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第87行

def legacy_retry_writes?
  客户端 && !客户端.选项[:retry_writes] && 客户端.max_write_retries > 0
end

#modern_retry_writes?布尔

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

返回:

  • 布尔值


83
84
85
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第83行

def modern_retry_writes?
  客户端 && 客户端.选项[:retry_writes]
end

#重试?布尔

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

该操作是重试 (true) 还是初始尝试 (false)。

返回:

  • 布尔值


104
105
106
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第104行

def 重试?
  !!@is_retry
end

# server_api对象

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



95
96
97
98
99
100
101
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第95行

def server_api
  if 客户端
    客户端.选项[:server_api]
  elsif 选项
    选项[:server_api]
  end
end

# startup_transaction?布尔

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

返回:

  • 布尔值


71
72
73
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第71行

def startup_transaction?
  会话&。startup_transaction? || false
end

# with (**opts) ⇒对象

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

返回一个新的上下文,其中的参数根据提供的参数进行更改。

参数:

  • opts (哈希)

    一组可自定义的选项

选项哈希 ( **opts ):

  • :is_retry ( true|false )

    该操作是重试还是首次尝试。



113
114
115
116
117
118
119
# File ' 构建/ruby-driver-v2.19/lib/ mongo /operation/context.rb', 第113行

def 通过(**opts)
  dup.点击 do |copy|
    opts. do |k, v|
      copy.instance_variable_set(" @ #{ k } ", v)
    end
  end
end