클래스: Mongo::Address
- 상속:
-
객체
- 객체
- 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 주소 또는 소켓 경로를 사용하여 서버 의 주소 를 나타냅니다.
네임스페이스 아래에 정의됨
모듈: 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 = {}) ⇒ 주소
주소 초기화합니다.
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 (읽기 전용)
호스팅하다 를 반환합니다. 원래 호스팅하다 이름을 반환합니다.
88 89 90 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 88 def 호스트 @host end |
#options ⇒ 객체 (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
94 95 96 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 94 def @options end |
#포트 ⇒ 정수 (읽기 전용)
반환 포트 포트입니다.
91 92 93 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 91 def 포트 @port end |
#시드 ⇒ string (읽기 전용)
시드 주소를 반환합니다.
85 86 87 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 85 def 시드 @seed end |
인스턴스 메서드 세부 정보
#==(기타) ⇒ true, false
다른 주소와 동일한지 확인합니다.
106 107 108 109 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 106 def ==(기타) 반환 거짓 하지 않는 한 기타.is_a?(주소) 호스트 == 기타.호스트 && 포트 == 기타.포트 end |
#eql?(기타) ⇒ true, false
해싱이 같은지 확인합니다.
121 122 123 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 121 def eql?(기타) self == 기타 end |
#해시 ⇒ 정수
주소 의 해시 값을 계산합니다.
133 134 135 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/address.rb', 줄 133 def 해시 [ 호스트, 포트 ].해시 end |
#검사 ⇒ string
예쁜 인쇄된 주소 검사를 받으세요.
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의 모든 하위 클래스를 발생할 수 있습니다.
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_s ⇒ string
주소 를 string 로 가져옵니다.
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 |