类:Mongo::Cluster::Topology::Base

继承:
对象
  • 对象
显示全部
扩展方式:
可转发
包括:
Loggable , Monitoring::Publishable
定义于:
build/Ruby-driver-v 2.19 /lib/mongo/cluster/topology/base.rb

Overview

定义所有拓扑共有的行为。

由于:

  • 2.7.0

直接已知子类

LoadBalancedReplicaSetNoPrimaryShardedSingleUnknown

常量摘要

Loggable中包含的常量

Loggable::PREFIX

实例属性摘要折叠

实例方法摘要折叠

Monitoring::Publishable 中包含的方法

#publish_cmap_event#publish_event#publish_sdam_event

Loggable中包含的方法

#log_debug#log_error#log_ Fatal#log_info#log_warn#logger

构造函数详情

#initialize (options, Monitoring, cluster) ⇒基础

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

使用选项初始化拓扑结构。

参数:

  • 选项 (哈希)

    选项。

  • 监控 (监控)

    监控。

  • 集群 (集群)

    集群。

选项哈希 ( options ):

  • :replica_set 符号

    要连接到的副本集的名称。 可以留空(接受 nil 或空string )以从集群中发现名称。 如果地址属于不同的副本集,则无法保证选择了哪个副本集 - 特别是,如果驱动程序在属于不同副本集的主节点之前返回其响应,则可能会选择从节点的副本集名称。 该选项只能在实例化副本集拓扑结构时指定。

  • :max_election_id ( BSON::ObjectId )

    符合 SDAM 规范的最大选举ID。 该选项只能在实例化副本集拓扑结构时指定。

  • :max_set_version 整数

    符合 SDAM 规范的最大集版本。 该选项只能在实例化副本集拓扑结构时指定。

由于:

  • 2.7.0



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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'build/Ruby-driver-v 2.19 /lib/mongo/cluster/topology/base.rb', 第56行

def 初始化(选项, 监控, 集群)
  选项 = validate_options(选项, 集群)

  @options = 选项
  @monitoring = 监控
  @cluster = 集群
  # 服务器描述列表在
  # 拓扑创建。 如果服务器描述稍后发生变化,
  # 应创建新的拓扑结构实例。
  @server_descriptions = {}
  (服务器 = 集群.server_list). do |server|
    @server_descriptions[server.地址.to_s] = server.描述
  end

  if is_a?(LoadBalanced)
    @兼容 = true
  else
    开始
      server_descriptions. do |Address_str, desc|
        除非 desc.未知?
          desc.功能.check_driver_support!
        end
      end
    救援 错误::不支持的功能 => e
      @兼容 = false
      @compatibility_error = e
    else
      @兼容 = true
    end
  end

  @have_data_ Bearing_servers = false
  @logic_session_timeout = server_descriptions.注入(nil) do |min, (Address_str, desc)|
    # 只能从承载数据的服务器读取 LST
    if desc.data_ Bearing?
      @have_data_ Bearing_servers = true
      中断 除非 超时 = desc.logic_session_timeout
      [超时, (min || 超时)].min
    else
      min
    end
  end

  if mongo::Lint.已启用?
    冻结
  end
end

实例属性详细信息

# Compatibility_error异常(只读)

返回 Compatibility_error 如果拓扑与驱动程序不兼容,则返回包含有关不兼容信息的异常。 如果拓扑结构与驱动程序兼容,则返回 nil。

返回:

  • 例外

    Compatibility_error 如果拓扑结构与驱动程序不兼容,则引发异常,其中包含有关不兼容的信息。 如果拓扑结构与驱动程序兼容,则返回 nil。

由于:

  • 2.7.0



151
152
153
# File 'build/Ruby-driver-v 2.19 /lib/mongo/cluster/topology/base.rb', 第151行

def Compatibility_error
  @compatibility_error
end

#logic_session_timeout整数? (只读)

注意:

该值以分钟为单位,与驾驶员中的大多数其他时间以秒为单位返回不同。

逻辑会话超时值(以分钟为单位)。

返回:

  • ( Integer , nil )

    逻辑会话超时。

由于:

  • 2.7.0



161
162
163
# File 'build/Ruby-driver-v 2.19 /lib/mongo/cluster/topology/base.rb', 第161行

def logic_session_timeout
  @logic_session_timeout
end

#监控监控(只读)

返回监控监控。

返回:

由于:

  • 2.7.0



118
119
120
# File 'build/Ruby-driver-v 2.19 /lib/mongo/cluster/topology/base.rb', 第118行

def 监控
  @monitoring
end

# options哈希(只读)

返回 options 选项。

返回:

  • (哈希)

    options 选项。

由于:

  • 2.7.0



105
106
107
# File 'build/Ruby-driver-v 2.19 /lib/mongo/cluster/topology/base.rb', 第105行

def 选项
  @options
end

# server_descriptions哈希(只读)

返回 server_descriptions 地址字符串到服务器描述的映射,集群中的每台服务器都有一个映射。

返回:

  • (哈希)

    server_descriptions 地址字符串到服务器描述的映射,集群中的每台服务器都有一个映射。

由于:

  • 2.7.0



136
137
138
# File 'build/Ruby-driver-v 2.19 /lib/mongo/cluster/topology/base.rb', 第136行

def server_descriptions
  @server_descriptions
end

实例方法详细信息

#addressesArray<String>

返回地址 服务器地址。

返回:

  • ( Array<String> )

    addresses MongoDB Server地址。

由于:

  • 2.7.0



113
114
115
# File 'build/Ruby-driver-v 2.19 /lib/mongo/cluster/topology/base.rb', 第113行

def 地址
  集群.地址.map(:seed)
end

#兼容?true|false

返回兼容拓扑结构是否与驱动程序兼容。

返回:

  • ( true|false )

    兼容拓扑结构是否与驾驶员兼容。

由于:

  • 2.7.0



142
143
144
# File 'build/Ruby-driver-v 2.19 /lib/mongo/cluster/topology/base.rb', 第142行

def 兼容?
  @兼容
end

# data_ Bearing_servers?true | false

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

返回 have_data_ Bearing_servers拓扑结构是否具有任何数据承载服务器,以用于逻辑会话超时计算。

返回:

  • ( true | false )

    have_data_ Bearing_servers拓扑结构是否具有任何数据承载服务器,用于逻辑会话超时计算。

由于:

  • 2.7.0



168
169
170
# File 'build/Ruby-driver-v 2.19 /lib/mongo/cluster/topology/base.rb', 第168行

def data_ Bearing_servers?
  @have_data_ Bearing_servers
end

# max_election_idBSON::ObjectId

主节点报告的最大的 ElectionId。 可能为零。

返回:

  • ( BSON::ObjectId )

    选举 ID。

由于:

  • 2.7.0



178
179
180
# File 'build/Ruby-driver-v 2.19 /lib/mongo/cluster/topology/base.rb', 第178行

def max_election_id
  选项[:max_election_id]
end

#max_set_versionInteger

主节点报告的最大 setVersion。 可能为零。

返回:

  • ( Integer )

    设立的版本。

由于:

  • 2.7.0



188
189
190
# File 'build/Ruby-driver-v 2.19 /lib/mongo/cluster/topology/base.rb', 第188行

def max_set_version
  选项[:max_set_version]
end

# new_max_election_id (description) ⇒对象

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

由于:

  • 2.7.0



193
194
195
196
197
198
199
200
201
# File 'build/Ruby-driver-v 2.19 /lib/mongo/cluster/topology/base.rb', 第193行

def new_max_election_id(描述)
  if 描述.election_id &&
      (max_election_id.nil? ||
          描述.election_id > max_election_id)
    描述.election_id
  else
    max_election_id
  end
end

# new_max_set_version (description) ⇒对象

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

由于:

  • 2.7.0



204
205
206
207
208
209
210
211
212
# File 'build/Ruby-driver-v 2.19 /lib/mongo/cluster/topology/base.rb', 第204行

def new_max_set_version(描述)
  if 描述.set_version &&
      (max_set_version.nil? ||
          描述.set_version > max_set_version)
    描述.set_version
  else
    max_set_version
  end
end

# replica_set_namestring

获取为此拓扑配置的副本集名称。

例子:

获取副本集名称。

topology.replica_set_name

返回:

  • ( string )

    已配置副本集的名称。

由于:

  • 2.0.0



128
129
130
# File 'build/Ruby-driver-v 2.19 /lib/mongo/cluster/topology/base.rb', 第128行

def replica_set_name
  选项[:replica_set_name]
end