클래스: Mongo::Server::Mongo::Connection Private
- 상속:
-
ConnectionCommon
- 객체
- ConnectionCommon
- Mongo::Server::Mongo::Connection
- 다음을 포함합니다.
- 로깅 가능
- 다음에 정의됨:
- build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb
개요
이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 클래스는 모니터 연결과 그 동작을 모델링합니다.
직접 알려진 하위 클래스
상수 요약
Loggable에서 포함된 상수
인스턴스 속성 요약 접기
-
#주소 ⇒ Mongo::Address
읽기 전용
비공개
주소 연결할 주소입니다.
-
옵션 #개 ⇒ 해시
읽기 전용
비공개
옵션 전달된 옵션입니다.
-
#server_connection_id ⇒ 정수
읽기 전용
비공개
Server_connection_id 서버 연결 ID입니다.
ConnectionCommon에서 상속된 속성
인스턴스 메서드 요약 접기
-
#check_document ⇒ BSON::Document
비공개
연결 확인에 사용할 문서를 작성합니다.
-
#연결합니다! ⇒ true
비공개
대상 주소에 대한 네트워크 연결을 설정합니다.
-
#연결 해제!(options = nil) ⇒ true
비공개
연결을 끊습니다.
-
#dispatch(message) ⇒ Protocol::Message
비공개
메시지를 보내고 결과를 반환합니다.
-
#dispatch_bytes(bytes, **opts) ⇒ Protocol::Message
비공개
사전 직렬화된 메시지를 보내고 결과를 반환합니다.
-
#악수! ⇒ BSON::Document
비공개
연결된 호스트에 핸드셰이크 명령을 보내고 응답의 유효성을 검사합니다.
-
#initialize(address, options = {}) ⇒ Connection
생성자
비공개
지정된 옵션을 사용하여 지정된 대상 주소에 대한 새 연결 객체를 만듭니다.
- #read_response(**opts) ⇒ 객체 비공개
-
#socket_timeout ⇒ Float
비공개
모니터링 소켓 시간 초과를 반환합니다.
- #write_bytes(bytes) ⇒ 객체 비공개
Loggable에 포함된 메서드
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger
ConnectionCommon에서 상속된 메서드
#connected?, #handShake_command, #handShake_document
생성자 세부 정보
#initialize(address, options = {}) ⇒ Connection
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
모니터링 연결은 인증하지 않습니다.
지정된 옵션을 사용하여 지정된 대상 주소에 대한 새 연결 객체를 만듭니다.
생성자는 I/O를 수행하지 않으므로 소켓이나 핸드셰이크를 생성하지 않습니다. 통화 연결! 메서드를 사용하여 네트워크 연결을 생성합니다.
58 59 60 61 62 63 64 65 66 67 68 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', 줄 58 def 초기화(주소, = {}) @address = 주소 @options = .dup.동결 하지 않는 한 @app_metadata = [:app_metadata] 올리다 ArgumentError, '앱 메타데이터 는 필수 항목입니다. ' end @socket = nil @pid = 프로세스.PID @compressor = nil @hello_ok = 거짓 end |
인스턴스 속성 세부 정보
#주소 ⇒ Mongo::Address (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
주소 연결할 주소를 반환합니다.
74 75 76 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', 줄 74 def 주소 @address end |
#options ⇒ 해시 (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
옵션을 반환합니다.
71 72 73 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', 줄 71 def @options end |
#server_connection_id ⇒ 정수 (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
반환값 server_connection_id 서버 연결 ID입니다.
90 91 92 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', 줄 90 def server_connection_id @server_connection_id end |
인스턴스 메서드 세부 정보
#check_document ⇒ BSON::Document
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
연결 확인에 사용할 문서를 작성합니다.
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', 줄 229 def check_document server_api = @app_metadata.server_api || [:server_api] doc = 만약 hello_ok? || server_api _doc = HELLO_DOC 만약 server_api _doc = _doc.merge(Utils.transformation_server_api(server_api)) end _doc other LEGACY_HELLO_DOC end 올바른 압축 상태를 유지하려면 # 압축기를 설정해야 합니다. 서버 설명에 #을 입력합니다. RUBY-2427참조 만약 압축기 = [:compressors] doc = doc.merge(압축: 압축기) end doc end |
#연결합니다! ⇒ true
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 메서드는 이전에 소켓이 존재하지 않았던 경우 소켓을 설정하여 연결 클래스를 변경합니다.
대상 주소에 대한 네트워크 연결을 설정합니다.
연결이 이미 설정된 경우 이 메서드는 아무 작업도 수행하지 않습니다.
158 159 160 161 162 163 164 165 166 167 168 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', 줄 158 def 연결! 만약 @socket 올리다 ArgumentError, '모니터링 연결이 이미 연결되었습니다. ' end @socket = add_server_diagnostics do 주소.소켓(socket_timeout, .merge( connection_address: 주소, 모니터: true)) end true end |
#연결 해제!(options = nil) ⇒ true
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 메서드는 닫는 데 성공하면 소켓을 nil로 설정하여 연결을 변경합니다.
이 메서드는 Server::Connections와의 호환성을 위해 옵션 인수를 허용합니다. However, all options are ignored.
연결을 끊습니다.
184 185 186 187 188 189 190 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', 줄 184 def 연결 해제!( = nil) 만약 소켓 소켓.닫기 구출 nil @socket = nil end true end |
#dispatch(message) ⇒ Protocol::Message
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
메시지를 보내고 결과를 반환합니다.
97 98 99 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', 줄 97 def 디스패치() Dispatch_bytes(.직렬화.to_s) end |
#dispatch_bytes(bytes, **opts) ⇒ Protocol::Message
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
사전 직렬화된 메시지를 보내고 결과를 반환합니다.
109 110 111 112 113 114 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', 줄 109 def Dispatch_bytes(바이트, **opts) write_bytes(바이트) read_response( socket_timeout: opts[:read_socket_timeout], ) end |
#악수! ⇒ BSON::Document
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
연결된 호스트에 핸드셰이크 명령을 보내고 응답의 유효성을 검사합니다.
197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', 줄 197 def 악수! 명령 = 핸드셰이크 명령( 핸드셰이크_문서( @app_metadata, server_api: [:server_api] ) ) Payload = 명령.직렬화.to_s = Dispatch_bytes(Payload) 결과 = 작업::결과.신규() 결과.유효성을 검사합니다! 회신 = 결과.문서.first set_compressor!(회신) set_hello_ok!(회신) @server_connection_id = 회신['connectionId'] 회신 구출 => exc msg = "#{주소}와(과) 핸드셰이크하지 못했습니다." Utils.경고_bg_Exception(msg, exc, 로거: [:logger], log_prefix: [:log_prefix], bg_error_backtrace: [:bg_error_backtrace], ) 올리다 end |
#read_response(**opts) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', 줄 130 def read_response(**opts) 하지 않는 한 연결됨? 올리다 ArgumentError, "연결되지 않은 연결에서 읽기 시도 중 #{self}" end add_server_connection_id do add_server_diagnostics do protocol::메시지.역직렬화(소켓, protocol::메시지::MAX_MESSAGE_SIZE, nil, **opts) end end end |
#socket_timeout ⇒ Float
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
모니터링 소켓 시간 초과를 반환합니다.
모니터링 연결은 연결 시간 초과 값을 소켓 시간 초과 값으로 사용합니다. 자세한 내용은 MongoDB Server 검색 및 모니터링 사양을 참조하세요.
85 86 87 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', 줄 85 def socket_timeout [:connect_timeout] || 서버::CONNECT_TIMEOUT end |
#write_bytes(bytes) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
116 117 118 119 120 121 122 123 124 125 126 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor/connection.rb', 줄 116 def write_bytes(바이트) 하지 않는 한 연결됨? 올리다 ArgumentError, "연결되지 않은 연결에서 디스패치 시도 중 #{self}" end add_server_connection_id do add_server_diagnostics do 소켓.쓰기(바이트) end end end |