クラス: 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 アドレスまたはソケット パスのいずれかを使用して、サーバーへのアドレスを表します。

以来

  • 2.0.0

名前空間で定義済み

Modules: Validator クラス: IPv4, IPv6, Unix

定数の概要の削減

FAMILY_MAP =

ソケットファミリーからリゾルバクラスへのマッピング。

以来

  • 2.0.0

{
  ::ソケット::PF_UNIX => Unix,
  ::ソケット::AF_NET 6 => IPv6,
  ::ソケット::AF_NET => IPv4
}.freeze
LocalHOST =

の localhost 定数。

以来

  • 2.1.0

'localhost'.freeze

インスタンス属性の概要を折りたたむ

インスタンス メソッドの概要を折りたたむ

コンストラクターの詳細

#初期化(シード、オプション = {}) =アドレス

アドレスを初期化します。

例:

DNS エントリとポートを使用してアドレスを初期化します。

Mongo::Address.new("app.example.com:27017")

DNS エントリを使用し、ポートは指定しないでアドレスを初期化します。

Mongo::Address.new("app.example.com")

ISV 4アドレスとポートを使用してアドレスを初期化します。

Mongo::Address.new("127.0.0.1:27017")

ISV 4アドレスとポートなしでアドレスを初期化します。

Mongo::Address.new("127.0.0.1")

ISV 6アドレスとポートを使用してアドレスを初期化します。

Mongo::Address.new("[::1]:27017")

ISV 6アドレスとポートなしでアドレスを初期化します。

Mongo::Address.new("[::1]")

UNIX ソケットでアドレスを初期化します。

Mongo::Address.new("/path/to/socket.sock")

パラメーター:

  • シード ( string )

    指定されたアドレス。

  • options ハッシュ (デフォルトは{}です)

    住所オプション。

オプション ハッシュ( options ):

  • :connect_timeout 浮動小数

    接続タイムアウト。

以来

  • 2.0.0

[ソースを表示]

75
76
77
78
79
80
81
82
ファイル 'lib/mongo/address.rb', 行 75

デフォルト 初期化(シード, options = {})
  場合 シード.nil?
    発生 ArgumentError, "アドレスは nil 以外である必要があります"
  end
  @シード = シード
  @host, @port = parse_host_port
  @options = ハッシュ[options.map { |k, v| [k.to_sym, v] }]
end

インスタンス属性の詳細

ホスト= string (読み取り専用)

ホスト 元のホスト名を返します。

次の値を返します。

  • ( string )

    host 元のホスト名。

以来

  • 2.0.0


88
89
90
ファイル 'lib/mongo/address.rb', 行 88

デフォルト ホスト
  @host
end

#オプション=オブジェクト(読み取り専用)

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

以来

  • 2.0.0


94
95
96
ファイル 'lib/mongo/address.rb', 行 94

デフォルト options
  @options
end

ポート整数(読み取り専用)

ポート ポートを返します。

次の値を返します。

  • (整数)

    ポート ポート。

以来

  • 2.0.0


91
92
93
ファイル 'lib/mongo/address.rb', 行 91

デフォルト ポート
  @port
end

#シードstring (読み取り専用)

シード シード アドレスを返します。

次の値を返します。

  • ( string )

    シード シード アドレス。

以来

  • 2.0.0


85
86
87
ファイル 'lib/mongo/address.rb', 行 85

デフォルト シード
  @シード
end

インスタンス メソッドの詳細

# == (その他) === (その他) ==================================================================================

アドレスが別のアドレスと等価であることを確認します。

例:

アドレスの等価性を確認します。

address == other

パラメーター:

  • その他 オブジェクト

    その他の オブジェクト。

次の値を返します。

  • truefalse

    オブジェクトが等しい場合。

以来

  • 2.0.0

[ソースを表示]

106
107
108
109
ファイル 'lib/mongo/address.rb', 行 106

デフォルト ==(その他)
  return false ただし、 その他.is_a?(address)
  ホスト == その他.ホスト & & ポート == その他.ポート
end

#eql? (その他) = truefalse

ハッシュの等価性を確認します。

例:

ハッシュの等価性を確認します。

address.eql?(other)

パラメーター:

  • その他 オブジェクト

    その他の オブジェクト。

次の値を返します。

  • truefalse

    オブジェクトが等しい場合。

以来

  • 2.2.0

[ソースを表示]

121
122
123
ファイル 'lib/mongo/address.rb', 行 121

デフォルト eql?(その他)
  自己 == その他
end

#ハッシュ=整数

アドレスのハッシュ値を計算します。

例:

ハッシュ値を計算します。

address.hash

次の値を返します。

  • (整数)

    ハッシュ値。

以来

  • 2.0.0

[ソースを表示]

133
134
135
ファイル 'lib/mongo/address.rb', 行 133

デフォルト ハッシュ
  [ ホスト, ポート ].ハッシュ
end

詳しくは、 を 検査しstring ます

pretty-printされた住所検査を取得します。

例:

アドレス検査を取得します。

address.inspect

次の値を返します。

  • ( string )

    適切な検査string 。

以来

  • 2.0.0

[ソースを表示]

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 サブクラスに例外をマッピングしないため、任意の 例外のサブクラスが発生する可能性があります。

例:

ソケットを取得します。

address.socket(5, :ssl => true)

パラメーター:

  • socket_timeout 浮動小数

    ソケット タイムアウト。

  • ops ハッシュ (デフォルトは{}です)

    オプション。

オプション ハッシュ( opts ):

  • :connect_timeout 浮動小数

    接続タイムアウト。

  • :csot ブール値

    ソケットを接続するときに、クライアント側の操作タイムアウトを考慮するかどうか。 このオプションは、タイムアウトした場合に発生するエラーにのみ影響します。

  • :ssl true | false

    SSL を使用するかどうか。

  • :ssl_ca_cert string

    対応する Client/Socket::SSL オプションと同じ。

  • :ssl_ca_cert_object 配列< OpenSSL::X 509 ::Certificate>

    対応する Client/Socket::SSL オプションと同じ。

  • :ssl_ca_cert_string string

    対応する Client/Socket::SSL オプションと同じ。

  • :ssl_cert string

    対応する Client/Socket::SSL オプションと同じ。

  • :ssl_cert_object OpenSSL::X 509 ::Certificate

    対応する Client/Socket::SSL オプションと同じ。

  • :ssl_cert_string string

    対応する Client/Socket::SSL オプションと同じ。

  • :ssl_key string

    対応する Client/Socket::SSL オプションと同じ。

  • :ssl_key_object (OpenSSL::PKey)

    対応する Client/Socket::SSL オプションと同じ。

  • :ssl_key_pass_ phrase string

    対応する Client/Socket::SSL オプションと同じ。

  • :ssl_key_string string

    対応する Client/Socket::SSL オプションと同じ。

  • :ssl_verify truefalse

    対応する Client/Socket::SSL オプションと同じ。

  • :ssl_verify_Certificate truefalse

    対応する Client/Socket::SSL オプションと同じ。

  • :ssl_verify_hostname truefalse

    対応する Client/Socket::SSL オプションと同じ。

次の値を返します。

次の値が発生します。

  • Mongo::Error

    ネットワーク接続に失敗した場合。

以来

  • 2.0.0

[ソースを表示]

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(options).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 として取得します。

例:

アドレスを string として取得します。

address.to_s

次の値を返します。

  • ( string )

    nice string。

以来

  • 2.0.0

[ソースを表示]

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