クラス: Mongo::Address
- 継承:
-
オブジェクト
- オブジェクト
- Mongo::Address
- 次による拡張機能。
- 転送可能
- 定義:
- lib/mongo/address.rb
4、lib/mongo/address/ipv.rb、lib/mongo/address/ipv.rb、lib/mongo/address/Unix.rb、lib/mongo/address/
6
validator.rb さらに...
Overview
IP アドレスまたはソケット パスのいずれかを使用して、サーバーへのアドレスを表します。
名前空間で定義済み
Modules: Validator クラス: IPv4, IPv6, Unix
定数の概要の削減
- FAMILY_MAP =
ソケットファミリーからリゾルバクラスへのマッピング。
{ ::ソケット::PF_UNIX => Unix, ::ソケット::AF_NET 6 => IPv6, ::ソケット::AF_NET => IPv4 }.freeze
- LocalHOST =
の localhost 定数。
'localhost'.freeze
インスタンス属性の概要を折りたたむ
-
#ホスト= string
readOnly
Host 元のホスト名。
- #オプション= オブジェクト readOnly private
-
#port ⇒ Integer
readOnly
ポート ポート。
-
シード値 ~ string
readOnly
シード シード アドレス。
インスタンス メソッドの概要を折りたたむ
-
== (その他) ===(その他) ======================================
アドレスが別のアドレスと等価であることを確認します。
-
#eql? (その他) = true、false
ハッシュの等価性を確認します。
-
#ハッシュ= 整数
アドレスのハッシュ値を計算します。
-
#初期化(シード、オプション = {}) = アドレス
コンストラクター
アドレスを初期化します。
-
詳しくは、 を 検査し ますstring
pretty-printされた住所検査を取得します。
-
# socket (socket_timeout,opts = {})==Mongo::Socket::SSL| Mongo::Socket::TCP | Mongo::Socket::Unix
private
オプションを指定して、このオブジェクトに保存されているアドレスのソケットを取得します。
-
# to_s = string
アドレスを string として取得します。
コンストラクターの詳細
インスタンス属性の詳細
ホスト= string (読み取り専用)
ホスト 元のホスト名を返します。
88 89 90 |
ファイル 'lib/mongo/address.rb', 行 88 デフォルト ホスト @host end |
#オプション=オブジェクト(読み取り専用)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
94 95 96 |
ファイル 'lib/mongo/address.rb', 行 94 デフォルト @options end |
ポート~整数(読み取り専用)
ポート ポートを返します。
91 92 93 |
ファイル 'lib/mongo/address.rb', 行 91 デフォルト ポート @port end |
#シード~ string (読み取り専用)
シード シード アドレスを返します。
85 86 87 |
ファイル 'lib/mongo/address.rb', 行 85 デフォルト シード @シード end |
インスタンス メソッドの詳細
# == (その他) === (その他) ==================================================================================
アドレスが別のアドレスと等価であることを確認します。
106 107 108 109 |
ファイル 'lib/mongo/address.rb', 行 106 デフォルト ==(その他) return false ただし、 その他.is_a?(address) ホスト == その他.ホスト & & ポート == その他.ポート end |
#eql? (その他) = true 、 false
ハッシュの等価性を確認します。
121 122 123 |
ファイル 'lib/mongo/address.rb', 行 121 デフォルト eql?(その他) 自己 == その他 end |
#ハッシュ=整数
アドレスのハッシュ値を計算します。
133 134 135 |
ファイル 'lib/mongo/address.rb', 行 133 デフォルト ハッシュ [ ホスト, ポート ].ハッシュ end |
詳しくは、 を 検査しstring ます
pretty-printされた住所検査を取得します。
145 146 147 |
ファイル 'lib/mongo/address.rb', 行 145 デフォルト 検査する " #< Mongo::Address: 0 x #{ object_id } address= #{ to_s } > " end |
# socket (socket_timeout,opts = {})== Mongo::Socket::SSL | Mongo::Socket::TCP | Mongo::Socket::Unix
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
オプションを指定して、このオブジェクトに保存されているアドレスのソケットを取得します。
このオブジェクトに保存されているアドレスが Unix パスに似ている場合、このメソッドはこのパスの Unix ドメイン ソケットを返します。
それ以外の場合、このメソッドはSocket#getaddrinfoを使用して、このオブジェクトに保存されているアドレスを IPv 4アドレスと IPv 6アドレスに解決しようとします。次に、結果のアドレスに接続し、最初に成功した接続のソケットを返します。 アドレス ファミリー(IPv 4 /ISV 6 )が試行される順序は、アドレスがgetaddrinfo
によって返される順序と同じで、ホスト システムによって決定されます。
名前解決は、 socket
を呼び出すごとに実行されます。 これは、シードとして使用されるホスト名またはサーバー構成で使用されるホスト名が に解決される変更を、影響を受けるホスト名やアドレスにソケットが以前に接続されていた場合でも、ドライバーにすぐに通知されるように行われます。 ただし、ホスト アドレスの変更がドライバーによって検出された場合でも、DNS TTL 値は引き続き影響を与える可能性があることに注意してください。
このメソッドは、DNS 解決およびそれ以降の接続試行中に発生した例外を伝達します。 ホスト名が複数の IP アドレスに解決される場合、最後の試行によって発生したエラーが呼び出し元に伝達されます。 このメソッドは Mongo::Error サブクラスに例外をマッピングしないため、任意の 例外のサブクラスが発生する可能性があります。
219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 |
ファイル 'lib/mongo/address.rb', 行 219 デフォルト ソケット(socket_timeout, ops = {}) csot = !!ops[:csot] ops = { connect_timeout: サーバー::CONNECT_TIMEOUT, }.update().update(ハッシュ[ops.map { |k, v| [k.to_sym, v] }]) map_例外(csot) 行う 場合 シード.ダウンケース =~ Unix::一致 distinct_address = Unix.新着情報(シード.ダウンケース) return distinct_address.ソケット(socket_timeout, ops) end # ドライバーが「localhost」に接続すると、IPv 4のみが試行されます 接続数。 ドライバーが他のホストに接続すると、 IPv 4と IPv 6接続の両方を試行します。 ファミリー = (ホスト == localhost) ? ::ソケット::AF_NET : ::ソケット::AF_UNSpec エラー = nil 場合によっては Socket#getaddrinfo が同じ情報を複数回返す場合があります。 # (返された配列内の複数の同一項目) ではない # では同じアドレスに複数回接続しようとすると認識します。 # はここで重複を排除します。 infos = ::ソケット.getaddrinfo(ホスト, nil, ファミリー, ::ソケット::SOCK_STREAM) 結果 = infos.map 行う |info| [info[4], info[3]] end.一意 結果.各 行う |ファミリー, address_str| begin distinct_address = FAMILY_MAP[ファミリー].新着情報(address_str, ポート, ホスト) ソケット = distinct_address.ソケット(socket_timeout, ops) return ソケット ヘルプ IOError, SystemCallError, エラー::SocketTimeoutError, エラー::SocketError => e エラー = e end end 発生 エラー end end |
# to_s = string
アドレスを string として取得します。
265 266 267 268 269 270 271 272 273 274 275 |
ファイル 'lib/mongo/address.rb', 行 265 デフォルト to_s 場合 ポート 場合 ホスト.include?(':') " [ #{ host } ]: #{ port } " else " #{ host } : #{ port } " end else ホスト end end |