类:Mongo::Srv::Resolver Private
- 继承:
-
对象
- 对象
- Mongo::Srv::Resolver
- 包括:
- Loggable
- 定义于:
- build/Ruby-driver-v 2.19 /lib/mongo/srv/resolver.rb
Overview
此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。
封装根据驱动程序的要求查询 SRV 记录的必要行为。
常量摘要折叠
- RECORD_PREFIX =
此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。
返回 RECORD_PREFIX 在查询 SRV 记录之前添加到每个主机名的前缀。
' _mongodb._tcp. '.冻结
Loggable中包含的常量
实例属性摘要折叠
-
# options ⇒ 哈希
只读
private
解析程序选项。
实例方法摘要折叠
-
# get_records (hostname, srv_service_name = nil, srv_max_hosts = nil) ⇒ Mongo::Srv::Result
private
获取给定主机名的所有 SRV 记录。
-
# get_txt_options_string (hostname) ⇒ nil | string
private
获取托管的 TXT 记录。
-
#initialize (**opts) ⇒ 解析程序
构造函数
private
创建新的解析程序。
-
# record_prefix (srv_service_name = nil) ⇒ string
private
使用自定义 SRV 服务名称(如果提供)生成记录前缀。
- # timeout ⇒ 对象 private
Loggable中包含的方法
#log_debug 、 #log_error 、 #log_ Fatal 、 #log_info 、 #log_warn 、 #logger
构造函数详情
#initialize (**opts) ⇒解析程序
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
创建新的解析程序。
51 52 53 54 55 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/srv/resolver.rb', 第51行 def 初始化(**opts) @options = opts.冻结 @resolver = Resolv::DNS.new(@options[:resolv_options]) @resolver.超时 = 超时 end |
实例属性详细信息
# options ⇒哈希(只读)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回解析程序选项。
58 59 60 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/srv/resolver.rb', 第58行 def @options end |
实例方法详细信息
# get_records (hostname, srv_service_name = nil, srv_max_hosts = nil) ⇒ Mongo::Srv::Result
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
获取给定主机名的所有 SRV 记录。 如果指定了 srv_max_hosts 且其大于0 ,则返回最大 srv_max_hosts 记录。
在找到域不匹配的记录或未找到记录的事件下,如果 :rise_on_invalid 选项为 true,则会引发异常,否则会记录警告。
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/srv/resolver.rb', 第84行 def get_records(主机名, srv_service_name=nil, srv_max_hosts=nil) query_name = record_prefix(srv_service_name) + 主机名 资源 = @resolver.getresources(query_name, Resolv::DNS::Resource::登录::SRV) # 将所有记录收集到一个 Result对象中,从而引发错误 # 如果发现域不匹配的记录,则记录警告。 # 请注意,如果出现警告,记录_not_ # 添加到 Result对象。 结果 = Srv::结果.new(主机名) 资源.每 do |记录| 开始 结果.add_record(记录) 救援 错误::MismatchedDomain => e if raise_on_invalid? 提高 else log_warn(e.) end end end # 如果未找到记录,则引发错误或记录警告 # 基于解析程序的 :raise_on_invalid 选项。 if 结果.空? if raise_on_invalid? 提高 错误::NoSRVRecords.new(URI::SRVProtocol::NO_SRV_RECORDS % 主机名) else log_warn(URI::SRVProtocol::NO_SRV_RECORDS % 主机名) end end # if srv_max_hosts is in [ 1 , #addresses) if (1...结果.Address_strs.长度).包括? srv_max_hosts sampled_records = 资源.随机播放.first(srv_max_hosts) 结果 = Srv::结果.new(主机名) sampled_records.每 { |记录| 结果.add_record(记录) } end 结果 end |
# get_txt_options_string (hostname) ⇒ nil | string
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
获取托管的 TXT 记录。
132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/srv/resolver.rb', 第132行 def (主机名) 记录 = @resolver.getresources(主机名, Resolv::DNS::Resource::登录::TXT) if 记录.空? return nil end if 记录.长度 > 1 msg = "只允许一条 TXT 记录:查询主机名#{ hostname }返回#{ records . length }条记录" 提高 错误::InvalidTXTRecord, msg end 记录[0].字符串.连接 (JOIN) end |
# record_prefix (srv_service_name = nil) ⇒ string
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
使用自定义 SRV 服务名称(如果提供)生成记录前缀。
38 39 40 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/srv/resolver.rb', 第38行 def record_prefix(srv_service_name=nil) return srv_service_name ? " _ #{ srv_service_name } ._tcp. " : RECORD_PREFIX end |
# timeout ⇒对象
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
60 61 62 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/srv/resolver.rb', 第60行 def 超时 [:timeout] || 监控::DEFAULT_TIMEOUT end |