클래스: Mongo::Address
- 상속:
-
객체
- 객체
- Mongo::Address
- 확장자:
- 전달 가능
- 다음에 정의됨:
- lib/ Mongo/ 주소.rb,
lib/4
Mongo/ 주소/ipv.rb, lib/ Mongo/6 주소/ipv.rb,
lib/ Mongo/ 주소/unix.rb,
lib/ Mongo/ 주소/ validator.rb
개요
IP 주소 또는 소켓 경로를 사용하여 서버 의 주소 를 나타냅니다.
네임스페이스 아래에 정의됨
모듈: Validator 클래스: IPv4, IPv6, Unix
상수 요약 접기
- FAMILY_MAP =
소켓 패밀리에서 해석기 클래스로 매핑.
{ ::소켓::PF_UNIX => Unix, ::소켓::AF_INET6 => IPv6, ::소켓::AF_INET => IPv4 }.동결
- LOCALHOST =
로컬 호스트 상수입니다.
'localhost'
인스턴스 속성 요약 접기
-
#호스트 ⇒ string
읽기 전용
호스트 원래 호스트 이름입니다.
- #options ⇒ 객체 읽기 전용 비공개
-
#포트 ⇒ 정수
읽기 전용
포트 포트입니다.
-
#시드 ⇒ string
읽기 전용
Seed 시드 주소 입니다.
인스턴스 메서드 요약 접기
-
#==(기타) ⇒ true, false
다른 주소와 동일한지 확인합니다.
-
#eql?(기타) ⇒ 참, 거짓
해싱이 같은지 확인합니다.
-
#해시 ⇒ 정수
주소 의 해시 값을 계산합니다.
-
#initialize(seed, options = {}) ⇒ 주소
생성자
주소 초기화합니다.
-
#검사 ⇒ string
예쁜 인쇄된 주소 검사를 받으세요.
-
#socket(socket_timeout, opts = {}) ⇒ Mongo::Socket::SSL | Mongo::Socket::TCP | Mongo::Socket::Unix
비공개
옵션이 주어지면 이 객체에 저장된 주소의 소켓을 가져옵니다.
-
#to_s ⇒ string
주소 를 string 로 가져옵니다.
생성자 세부 정보
#initialize(seed, options = {}) ⇒ 주소
주소 초기화합니다.
73 74 75 76 77 78 79 |
# 파일 'lib/ Mongo/ 주소.rb', 73줄 def 초기화(시드, = {}) 올리다 ArgumentError, ' 주소 'nil'이 아니어야 합니다. 만약 시드.nil? @seed = 시드 @host, @port = parse_host_port @options = 해시[.map { |k, v| [ k.to_sym, v ] }] end |
인스턴스 속성 세부 정보
#호스트 ⇒ string (읽기 전용)
호스팅하다 를 반환합니다. 원래 호스팅하다 이름을 반환합니다.
85 86 87 |
# 파일 'lib/ Mongo/ 주소.rb', 85줄 def 호스트 @host end |
#options ⇒ 객체 (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
91 92 93 |
# 파일 'lib/ Mongo/ 주소.rb', 91줄 def @options end |
#포트 ⇒ 정수 (읽기 전용)
반환 포트 포트입니다.
88 89 90 |
# 파일 'lib/ Mongo/ 주소.rb', 88줄 def 포트 @port end |
#시드 ⇒ string (읽기 전용)
시드 주소를 반환합니다.
82 83 84 |
# 파일 'lib/ Mongo/ 주소.rb', 82줄 def 시드 @seed end |
인스턴스 메서드 세부 정보
#==(기타) ⇒ true, false
다른 주소와 동일한지 확인합니다.
103 104 105 106 107 |
# 파일 'lib/ Mongo/ 주소.rb', 103줄 def ==(기타) 반환 거짓 하지 않는 한 기타.is_a?(주소) 호스트 == 기타.호스트 && 포트 == 기타.포트 end |
#eql?(기타) ⇒ true, false
해싱이 같은지 확인합니다.
119 120 121 |
# 파일 'lib/ Mongo/ 주소.rb', 119줄 def eql?(기타) self == 기타 end |
#해시 ⇒ 정수
주소 의 해시 값을 계산합니다.
131 132 133 |
# 파일 'lib/ Mongo/ 주소.rb', 131줄 def 해시 [ 호스트, 포트 ].해시 end |
#검사 ⇒ string
예쁜 인쇄된 주소 검사를 받으세요.
143 144 145 |
# 파일 'lib/ Mongo/ 주소.rb', 143줄 def 검사 "#<Mongo::Address:0x#{object_id} 주소=#{self}>" 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의 모든 하위 클래스를 발생할 수 있습니다.
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 |
# 파일 'lib/ Mongo/ 주소.rb', 217줄 def 소켓(socket_timeout, opts = {}) csot = !!opts[:csot] opts = { connect_timeout: 서버::CONNECT_TIMEOUT, }.update().update(해시[opts.map { |k, v| [ k.to_sym, v ] }]) map_Exceptions(csot) do 만약 Unix::match.일치?(시드.downcase) 특정 주소 = Unix.신규(시드.downcase) 반환 특정 주소.소켓(socket_timeout, opts) end # 드라이버가 'localhost'에 연결되면 IPv4만 시도합니다. # 연결. 운전자 가 다른 호스트에 연결되면 # IPv4 연결과 IPv6 연결을 모두 시도합니다. family = (호스트 == localhost) ? ::소켓::AF_INET : ::소켓::AF_UNspec 오류 = nil # 때때로 Socket#getaddrinfo가 동일한 정보를 두 번 이상 반환합니다. # (반환된 배열 에 동일한 항목 여러 개). 그렇지 않습니다. # 동일한 주소 에 두 번 이상 연결하려고 시도하는 감지 # 여기서 중복을 제거합니다. 정보 = getaddrinfo(호스트, family) 결과 = 정보.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 |
#to_s ⇒ string
주소 를 string 로 가져옵니다.
261 262 263 264 265 266 267 268 269 270 271 |
# 파일 'lib/ Mongo/ 주소.rb', 261줄 def to_s 만약 포트 만약 호스트.포함?(':') "[#{호스팅하다}]:#{포트}" other "#{호스팅하다}:#{포트}" end other 호스트 end end |