클래스: Mongo::Address

상속:
객체
  • 객체
모두 표시
확장자:
전달 가능
다음에 정의됨:
빌드/ Ruby-driver-v2.19/lib/mongo/ 주소.rb,
빌드/ Ruby-driver-v2.19/lib/mongo/ 주소/ipv4.rb,
빌드/ Ruby-driver-v2.19/lib/mongo/ 주소/ipv6.rb,
빌드/ Ruby-driver-v2.19/lib/mongo/ 주소/unix.rb,
빌드/ Ruby-driver-v2.19/lib/mongo/ 주소/validator.rb

개요

IP 주소 또는 소켓 경로를 사용하여 서버 의 주소 를 나타냅니다.

이후:

  • 2.0.0

네임스페이스 아래에 정의됨

모듈: Validator 클래스: IPv4, IPv6, Unix

상수 요약 접기

FAMILY_MAP =

소켓 패밀리에서 해석기 클래스로 매핑.

이후:

  • 2.0.0

{
  ::소켓::PF_UNIX => Unix,
  ::소켓::AF_INET6 => IPv6,
  ::소켓::AF_INET => IPv4
}.동결
LOCALHOST =

로컬 호스트 상수입니다.

이후:

  • 2.1.0

'localhost'.동결

인스턴스 속성 요약 접기

인스턴스 메서드 요약 접기

생성자 세부 정보

#initialize(seed, options = {}) ⇒ 주소

주소 초기화합니다.

예시:

DNS 항목과 포트로 주소를 초기화합니다.

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

포트 없이 DNS 항목을 사용하여 주소 를 초기화합니다.

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

IPV4 주소 및 포트로 주소를 초기화합니다.

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

포트 없이 IPV4 주소 로 주소 를 초기화합니다.

Mongo::Address.new("127.0.0.1")

IPV6 주소 및 포트로 주소를 초기화합니다.

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

포트 없이 IPV6 주소 로 주소 를 초기화합니다.

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

유닉스 소켓으로 주소 를 초기화합니다.

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

매개변수:

  • 시드 (string)

    제공된 주소 입니다.

  • 옵션 (해시) (기본값: {})

    주소 옵션.

옵션 해시(options):

  • :connect_timeout (Float)

    연결 시간이 초과되었습니다.

이후:

  • 2.0.0



75
76
77
78
79
80
81
82
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 75

def 초기화(시드, 옵션 = {})
  만약 시드.nil?
    올리다 ArgumentError, "주소 는 nil이 아니어야 합니다"
  end
  @seed = 시드
  @host, @port = parse_host_port
  @options = 해시[옵션.map { |k, v| [k.to_sym, v] }]
end

인스턴스 속성 세부 정보

#호스트string (읽기 전용)

호스팅하다 를 반환합니다. 원래 호스팅하다 이름을 반환합니다.

반환합니다:

  • (string)

    호스팅하다 원래 호스팅하다 이름입니다.

이후:

  • 2.0.0



88
89
90
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 88

def 호스트
  @host
end

#options객체 (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0



94
95
96
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 94

def 옵션
  @options
end

#포트정수 (읽기 전용)

반환 포트 포트입니다.

반환합니다:

  • (정수)

    포트 포트입니다.

이후:

  • 2.0.0



91
92
93
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 91

def 포트
  @port
end

#시드string (읽기 전용)

시드 주소를 반환합니다.

반환합니다:

  • (string)

    시드 시드 주소 입니다.

이후:

  • 2.0.0



85
86
87
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 85

def 시드
  @seed
end

인스턴스 메서드 세부 정보

#==(기타) ⇒ true, false

다른 주소와 동일한지 확인합니다.

예시:

주소 동등성을 확인합니다.

address == other

매개변수:

  • 기타 (객체)

    다른 객체.

반환합니다:

  • (true, false)

    객체가 동일한 경우.

이후:

  • 2.0.0



106
107
108
109
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 106

def ==(기타)
  반환 거짓 하지 않는 한 기타.is_a?(주소)
  호스트 == 기타.호스트 && 포트 == 기타.포트
end

#eql?(기타) ⇒ true, false

해싱이 같은지 확인합니다.

예시:

해싱 동등성을 확인합니다.

address.eql?(other)

매개변수:

  • 기타 (객체)

    다른 객체.

반환합니다:

  • (true, false)

    객체가 동일한 경우.

이후:

  • 2.2.0



121
122
123
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 121

def eql?(기타)
  self == 기타
end

#해시정수

주소 의 해시 값을 계산합니다.

예시:

해시 값을 계산합니다.

address.hash

반환합니다:

  • (정수)

    해시 값입니다.

이후:

  • 2.0.0



133
134
135
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 133

def 해시
  [ 호스트, 포트 ].해시
end

#검사string

예쁜 인쇄된 주소 검사를 받으세요.

예시:

주소 검사를 받습니다.

address.inspect

반환합니다:

  • (string)

    좋은 검사 string 입니다.

이후:

  • 2.0.0



145
146
147
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 145

def 검사
  "#<Mongo::Address:0x#{object_id} 주소=#{to_s}>"
end

#socket(socket_timeout, opts = {}) ⇒ Mongo::Socket::SSL | Mongo::Socket::TCP | Mongo::Socket::Unix

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

옵션이 주어지면 이 객체에 저장된 주소의 소켓을 가져옵니다.

이 객체 에 저장된 주소 가 Unix 경로처럼 보이면 이 메서드는 이 경로에 대한 Unix 도메인 소켓을 반환합니다.

그렇지 않으면 이 메서드는 Socket#getaddrinfo 를 사용하여 이 객체 에 저장된 주소 를 IPv4 및 IPv6 주소로 확인하려고 시도한 다음 결과 주소에 연결하여 첫 번째 성공적인 연결의 소켓을 반환합니다. 주소 패밀리(IPv4/IPV6)가 시도되는 순서는 getaddrinfo 에서 주소가 반환되는 순서와 동일하며 호스팅하다 시스템에 의해 결정됩니다.

이름 확인은 각 socket 호출에서 수행됩니다. 이는 시드로 사용되는 호스팅하다 이름 또는 서버 구성에서 확인되는 주소의 변경 사항이 이전에 영향을 받는 호스팅하다 이름/ 주소 에 소켓이 연결된 적이 있더라도 운전자 가 즉시 인식하도록 하기 위한 것입니다. 그러나 DNS TTL 값은 운전자 가 호스팅하다 주소 변경을 감지하는 시기에 여전히 영향을 미칠 수 있습니다.

이 메서드는 DNS 확인 및 후속 연결 시도 중에 발생한 모든 예외를 전파합니다. In case of a host name resolving to multiple IP addresses, the error raised by the last attempt is propagated to the caller. 이 메서드는 예외를 Mongo::Error 하위 클래스에 매핑하지 않으며, Exception의 모든 하위 클래스를 발생할 수 있습니다.

예시:

소켓을 가져옵니다.

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

매개변수:

  • socket_timeout (Float)

    소켓 시간 초과입니다.

  • opts (해시) (기본값: {})

    옵션.

옵션 해시(opts):

  • :connect_timeout (Float)

    연결 시간이 초과되었습니다.

  • :ssl (true | false)

    SSL 사용 여부입니다.

  • :ssl_ca_cert (string)

    해당 Client/Socket::SSL 옵션과 동일합니다.

  • :ssl_ca_cert_object (Array<OpenSSL::X509::Certificate>)

    해당 Client/Socket::SSL 옵션과 동일합니다.

  • :ssl_ca_cert_string (string)

    해당 Client/Socket::SSL 옵션과 동일합니다.

  • :ssl_cert (string)

    해당 Client/Socket::SSL 옵션과 동일합니다.

  • :ssl_cert_object (OpenSSL::X509::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 (true, false)

    해당 Client/Socket::SSL 옵션과 동일합니다.

  • :ssl_verify_certificate (true, false)

    해당 Client/Socket::SSL 옵션과 동일합니다.

  • :ssl_verify_hostname (true, false)

    해당 Client/Socket::SSL 옵션과 동일합니다.

반환합니다:

다음을 발생시킵니다.

  • (Mongo::Error)

    네트워크 연결에 실패한 경우.

이후:

  • 2.0.0



216
217
218
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
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 216

def 소켓(socket_timeout, opts = {})
  opts = {
    connect_timeout: 서버::CONNECT_TIMEOUT,
  }.update(옵션).update(해시[opts.map { |k, v| [k.to_sym, v] }])

  map_Exceptions do
    만약 시드.downcase =~ Unix::match
      특정 주소 = Unix.신규(시드.downcase)
      반환 특정 주소.소켓(socket_timeout, opts)
    end

    # 드라이버가 'localhost'에 연결되면 IPv4만 시도합니다.
    # 연결. 운전자 가 다른 호스트에 연결되면
    # IPv4 연결과 IPv6 연결을 모두 시도합니다.
    family = (호스트 == localhost) ? ::소켓::AF_INET : ::소켓::AF_UNspec
    오류 = nil
    # 때때로 Socket#getaddrinfo가 동일한 정보를 두 번 이상 반환합니다.
    # (반환된 배열 에 동일한 항목 여러 개). 그렇지 않습니다.
    # 동일한 주소 에 두 번 이상 연결하려고 시도하는 감지
    # 여기서 중복을 제거합니다.
    정보 = ::소켓.getaddrinfo(호스트, nil, family, ::소켓::SOCK_STREAM)
    결과 = 정보.map do |정보|
      [정보[4], 정보[3]]
    end.uniq
    결과. do |family, 주소_str|
      시작
        특정 주소 = FAMILY_MAP[family].신규(주소_str, 포트, 호스트)
        소켓 = 특정 주소.소켓(socket_timeout, opts)
        반환 소켓
      구출 IOError, SystemCallError, 오류::SocketTimeoutError, 오류::SocketError => e
        오류 = e
      end
    end
    올리다 오류
  end
end

#to_sstring

주소 를 string 로 가져옵니다.

예시:

주소 를 string 로 가져옵니다.

address.to_s

반환합니다:

  • (string)

    좋은 string 입니다.

이후:

  • 2.0.0



261
262
263
264
265
266
267
268
269
270
271
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 261

def to_s
  만약 포트
    만약 호스트.포함?(':')
      "[#{호스팅하다}]:#{포트}"
    other
      "#{호스팅하다}:#{포트}"
    end
  other
    호스트
  end
end