클래스: Mongo::Srv::Resolver Private

상속:
객체
  • 객체
모두 표시
다음을 포함합니다.
로깅 가능
다음에 정의됨:
build/ruby-driver-v2.19/lib/mongo/srv/resolver.rb

개요

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

드라이버의 요구에 따라 SRV 레코드를 쿼리하는 데 필요한 동작을 캡슐화합니다.

상수 요약 접기

RECORD_PREFIX =

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

반환 REORD_PREFIX SRV 레코드를 쿼리하기 전에 각 호스트 이름 앞에 붙은 접두사.

반환합니다:

  • (string)

    RECORD_PREFIX SRV 레코드를 쿼리하기 전에 각 호스트 이름 앞에 붙는 접두사입니다.

'_mongodb._tcp.'.동결

Loggable에서 포함된 상수

Loggable::prefix

인스턴스 속성 요약 접기

인스턴스 메서드 요약 접기

Loggable에 포함된 메서드

#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger

생성자 세부 정보

#initialize(**opts) ⇒ 리졸버

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

새 해석기를 만듭니다.

매개변수:

  • opts (해시)

    사용자 지정 가능한 옵션 세트

옵션 해시(**opts):

  • :timeout (Float)

    각 DNS 기록 확인에 사용할 제한 시간(초)입니다.

  • :raise_on_invalid (부울)

    도메인이 일치하지 않는 레코드를 찾거나 레코드를 찾을 수 없는 경우 예외를 발생시킬지 여부입니다. 기본값은 true입니다.

  • :resolv_options (해시)

    내부 드라이버 전용입니다. SRV 조회를 위해 Resolve::DNS 생성자에 전달할 옵션입니다.



51
52
53
54
55
# 파일 'build/ruby-driver-v2.19/lib/mongo/srv/resolver.rb', 줄 51

def 초기화(**opts)
  @options = opts.동결
  @resolver = Resolve::DNS.신규(@options[:resolv_options])
  @resolver.시간 초과 = 타임아웃
end

인스턴스 속성 세부 정보

#options해시 (읽기 전용)

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

리졸버 옵션을 반환합니다.

반환합니다:

  • (해시)

    리졸버 옵션.



58
59
60
# 파일 'build/ruby-driver-v2.19/lib/mongo/srv/resolver.rb', 줄 58

def 옵션
  @options
end

인스턴스 메서드 세부 정보

#get_records(hostname, srv_service_name = nil, srv_max_hosts = nil) ⇒ Mongo::Srv::Result

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

지정된 호스트 이름에 대한 모든 SRV 레코드를 가져옵니다. srv_max_hosts가 지정되었고 이 값이 0 보다 큰 경우 최대 srv_max_hosts 레코드를 반환합니다.

일치하지 않는 도메인이 있는 기록 를 찾거나 레코드를 찾을 수 없는 이벤트 :raise_on_invalid 옵션이 true이면 예외가 발생하고, 그렇지 않으면 경고가 기록됩니다.

매개변수:

  • 호스트 이름 (string)

    기록을 가져와야 하는 호스트 이름입니다.

  • srv_service_name (string | nil) (기본값: nil)

    DNS 쿼리에 대한 SRV 서비스 이름입니다. nil이면 ' MongoDB'가 사용됩니다.

  • srv_max_hosts (정수 | nil) (기본값: nil)

    반환할 최대 레코드 수입니다. 이 값이 nil이면 모든 레코드를 반환합니다.

반환합니다:

다음을 발생시킵니다.

  • (Mongo::Error::MismatchedDomain)

    :raise_in_invalid 리졸버 옵션이 true이고 호스트 이름과 일치하지 않는 도메인 이름을 가진 레코드가 발견된 경우입니다.

  • (Mongo::Error::NoSRVRecords)

    :raise_in_invalid 리졸버 옵션이 true이고 레코드를 찾을 수 없는 경우입니다.



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# 파일 'build/ruby-driver-v2.19/lib/mongo/srv/resolver.rb', 줄 84

def get_records(호스트 이름, srv_service_name=nil, srv_max_hosts=nil)
  query_name = record_prefix(srv_service_name) + 호스트 이름
  리소스 = @resolver.getresources(query_name, Resolve::DNS::Resource::::SRV)

  # 모든 레코드를 Result 객체 에 수집하여 오류를 발생시킵니다.
  # 또는 일치하지 않는 도메인이 있는 레코드가 발견되면 경고를 기록합니다.
  # 경고가 발생해도 기록은 _not_
  # Result 객체 에 추가됩니다.
  결과 = Srv::결과.신규(호스트 이름)
  리소스. do |기록|
    시작
      결과.add_record(기록)
    구출 오류::MismatchedDomain => e
      만약 raise_on_invalid?
        올리다
      other
        log_warn(e.메시지)
      end
    end
  end

  # 레코드를 찾을 수 없으면 오류를 제기하거나 경고를 기록합니다.
  # 리졸버의 :raise_on_invalid 옵션을 기반으로 합니다.
  만약 결과.비어 있나요?
    만약 raise_on_invalid?
      올리다 오류::NoSRVRecords.신규(URI::SRVProtocol::NO_SRV_RECORDS % 호스트 이름)
    other
      log_warn(URI::SRVProtocol::NO_SRV_RECORDS % 호스트 이름)
    end
  end

  # srv_max_hosts가 [1, #addresses)에 있는 경우
  만약 (1...결과.address_strs.분량).포함? srv_max_hosts
    sampled_records = 리소스.셔플.first(srv_max_hosts)
    결과 = Srv::결과.신규(호스트 이름)
    sampled_records. { |기록| 결과.add_record(기록) }
  end
  결과
end

#get_txt_options_string(호스트 이름) ⇒ nil | string

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

호스팅하다 의 TXT 레코드를 가져옵니다.

매개변수:

  • 호스트 이름 (string)

    TXT 레코드를 가져와야 하는 호스트입니다.

반환합니다:

  • (nil | string)

    호스트 이름과 연결된 TXT 기록 의 URI 옵션 string 이거나, 해당 기록 가 없는 경우 nil입니다.

다음을 발생시킵니다.



132
133
134
135
136
137
138
139
140
141
142
143
144
145
# 파일 'build/ruby-driver-v2.19/lib/mongo/srv/resolver.rb', 줄 132

def get_txt_options_string(호스트 이름)
  기록 = @resolver.getresources(호스트 이름, Resolve::DNS::Resource::::TXT)
  만약 기록.비어 있나요?
    반환 nil
  end

  만약 기록.분량 > 1
    msg = "TXT 레코드는 하나만 허용됩니다: 쿼리 호스트 이름 #{호스트 이름} 반환된 #{레코드.길이} 레코드"

    올리다 오류::InvalidTXTRecord, msg
  end

  기록[0].strings.가입
end

#record_prefix(srv_service_name = nil) ⇒ string

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

사용자 지정 SRV 서비스 이름이 제공된 경우 해당 이름을 사용하여 레코드 접두사를 생성합니다.

매개변수:

  • srv_service_name (해시) (기본값: nil)

    사용자 지정 가능한 옵션 세트

옵션 해시(srv_service_name):

  • (string | nil)

    기록 접두사에 사용할 SRV 서비스 이름입니다.

반환합니다:

  • (string)

    생성된 기록 접두사입니다.



38
39
40
# 파일 'build/ruby-driver-v2.19/lib/mongo/srv/resolver.rb', 줄 38

def record_prefix(srv_service_name=nil)
  반환 srv_service_name ? "_#{srv_service_name}._tcp." : RECORD_PREFIX
end

#timeout객체

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



60
61
62
# 파일 'build/ruby-driver-v2.19/lib/mongo/srv/resolver.rb', 줄 60

def 타임아웃
  옵션[:timeout] || 모니터::DEFAULT_TIMEOUT
end