클래스: Mongo::Server::Connection
- 상속:
-
ConnectionBase
- 객체
- ConnectionCommon
- ConnectionBase
- Mongo::Server::Connection
- 확장자:
- 전달 가능
- 다음을 포함합니다.
- ID, 모니터링::게시 가능, 재시도 가능
- 다음에 정의됨:
- lib/ Mongo/ 서버/connection.rb
개요
이 클래스는 서버 및 그 동작에 대한 소켓 연결을 모델링합니다.
상수 요약 접기
- PING =
더 이상 사용되지 않습니다.
MongoDB 서버 선택 사양에서는 더 이상 필요하지 않습니다.
핑 명령입니다.
{ 핑: 1 }.동결
- PING_OP_MSG =
더 이상 사용되지 않습니다.
MongoDB 서버 선택 사양에서는 더 이상 필요하지 않습니다.
OP_MSG에 대한 핑 명령
{ :ping => 1, '$db' => Database::ADMIN }.동결
- PING_OP_MSG_MESSAGE =
더 이상 사용되지 않습니다.
MongoDB 서버 선택 사양에서는 더 이상 필요하지 않습니다.
OP_MSG로 메시지 핑
protocol::메시지.신규([], {}, PING_OP_MSG)
- PING_OP_MSG_BYTES =
더 이상 사용되지 않습니다.
MongoDB 서버 선택 사양에서는 더 이상 필요하지 않습니다.
원시 바이트로 핑 OP_MSG 메시지
PING_OP_MSG_MESSAGE.직렬화.to_s.동결
Loggable에서 포함된 상수
ConnectionBase에서 상속된 상수
Mongo::Server::ConnectionBase::DEFAULT_MAX_BSON_OBJECT_SIZE, Mongo::Server::ConnectionBase::MAX_BSON_COMMAND_OVERHEAD, Mongo::Server::ConnectionBase::REDUCED_MAX_BSON_SIZE
인스턴스 속성 요약 접기
-
#global_id ⇒ 정수
읽기 전용
모든 연결에서.
-
#ID ⇒ 정수
읽기 전용
동일한 서버 객체에 대한 연결을 통해 전달됩니다.
-
#last_checkin ⇒ 시간
읽기 전용
마지막으로 연결이 풀에 다시 체크인된 시간입니다.
모니터링::게시 가능에 포함된 속성
ConnectionBase에서 상속된 속성
#description, #options, #server
ConnectionCommon에서 상속된 속성
인스턴스 메서드 요약 접기
-
#닫았나요? ⇒ true | false
연결이 닫혔는지 여부입니다.
-
#연결합니다!(context = nil) ⇒ true
대상 주소에 대한 네트워크 연결을 설정합니다.
-
#연결되었나요? ⇒ true | false
연결이 연결되었으며 중단되거나 닫히지 않았거나 오류가 발생하지 않았는지 여부입니다.
-
#connection_pool ⇒ 객체
비공개
이 연결이 생성된 연결 풀입니다.
-
#연결 해제!(options = nil) ⇒ true
연결을 끊습니다.
- #오류? ⇒ 부울 비공개
-
#initialize(server, options = {}) ⇒ Connection
생성자
비공개
지정된 옵션을 사용하여 지정된 대상 주소에 대한 새 연결 객체를 만듭니다.
-
#중단되었습니다! ⇒ 객체
연결을 중단됨으로 표시합니다.
-
#중단되었나요? ⇒ true | false
연결이 중단되었는지 여부입니다.
-
#pin(reason =: 커서) ⇒ 객체
비공개
주어진 이유로 연결을 고정됨으로 표시합니다.
-
#ping ⇒ true, false
사용 중단
더 이상 사용되지 않습니다.
MongoDB 서버 선택 사양에서는 더 이상 필요하지 않습니다.
-
#고정되었나요? ⇒ 부울
비공개
연결이 트랜잭션 또는 커서 작업에서 사용되는지 여부입니다.
-
#record_checkin! ⇒ 자기
마지막 체크인 시간을 기록합니다.
-
#socket_timeout ⇒ Float (동의어: #timeout)
소켓에서 작업을 실행하는 데 걸리는 시간 제한을 가져옵니다.
-
#transport ⇒ Symbol | nil
비공개
이 연결의 전송 유형을 가져옵니다.
-
#unpin(reason =: 커서) ⇒ 객체
비공개
주어진 이유로 연결에서 핀을 제거합니다.
-
#unpin_all ⇒ 객체
비공개
연결에서 모든 핀을 제거합니다.
ID에 포함된 메서드
Retryable에 포함된 메서드
#read_Worker, #select_server, #with_overload_retry, #write_Worker
Monitoring::Publishable에 포함된 메서드
#publish_cmap_event, #publish_event, #publish_s담_event
Loggable에 포함된 메서드
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger
ConnectionBase에서 상속된 메서드
#app_metadata, #dispatch, #generation, #service_id
ConnectionCommon에서 상속된 메서드
#handShake_command, #handShake_document
생성자 세부 정보
#initialize(server, options = {}) ⇒ Connection
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
연결은 MongoDB Server 외부에서 직접 인스턴스화되어서는 안 됩니다.
지정된 옵션을 사용하여 지정된 대상 주소에 대한 새 연결 객체를 만듭니다.
생성자는 I/O를 수행하지 않으므로 소켓, 핸드셰이크 또는 인증을 생성하지 않습니다. 통화 연결! 메서드를 사용하여 네트워크 연결을 생성합니다.
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 90 def 초기화(서버, = {}) 만약 서버.load_balancer? && [:generation] 올리다 ArgumentError, '서버 가 로드 밸런서 인 경우 생성을 설정하다 수 없습니다. ' end @id = 서버.Next_connection_id @global_id = self.클래스.Next_id @monitoring = 서버.모니터링 @options = .동결 @server = 서버 @socket = nil @last_checkin = nil @auth_mechanism = nil @pid = 프로세스.PID @pin_reasons = 세트.신규 publish_cmap_event( 모니터링::이벤트::Cmap::connectionCreated 이벤트.신규(주소, id) ) end |
인스턴스 속성 세부 정보
#global_id ⇒ 정수 (읽기 전용)
모든 연결에서.
124 125 126 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 124 def global_id @global_id end |
#ID ⇒ 정수 (읽기 전용)
동일한 서버 객체에 대한 연결을 통해 전달됩니다.
120 121 122 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 120 def id @id end |
#last_checkin ⇒ 시간 (읽기 전용)
연결이 풀에 마지막으로 체크인된 시간을 반환합니다.
114 115 116 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 114 def last_checkin @last_checkin end |
인스턴스 메서드 세부 정보
#닫았나요? ⇒ true | false
연결이 닫혔는지 여부입니다.
닫힌 연결은 더 이상 사용하지 않아야 합니다. 대신 연결 풀에서 새 연결을 얻습니다.
152 153 154 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 152 def 닫힘? !!@closed end |
#연결합니다!(context = nil) ⇒ true
이 메서드는 이전에 소켓이 존재하지 않았던 경우 소켓을 설정하여 연결 객체를 변경합니다.
대상 주소에 대한 네트워크 연결을 설정합니다.
연결이 이미 설정된 경우 이 메서드는 아무 작업도 수행하지 않습니다.
228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 228 def 연결!(컨텍스트 = nil) raise_if_closed! 하지 않는 한 @socket @socket = create_socket(컨텍스트) @description, @compressor = do_connect 만약 서버.load_balancer? 만약 Lint.활성화? && !service_id 올리다 오류::Internal DriverError, '로드 밸런서 에 대한 연결이며 여기에 service_id가 설정하다 있어야 하지만 ' end @generation = connection_pool.generate_manager.생성(service_id: service_id) end publish_cmap_event( 모니터링::이벤트::Cmap::connectionReady.신규(주소, id) ) @close_event_published = 거짓 end true end |
#연결되었나요? ⇒ true | false
연결이 연결되었으며 중단되거나 닫히지 않았거나 오류가 발생하지 않았는지 여부입니다.
140 141 142 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 140 def 연결됨? !닫힘? && !오류? && !중단? && !!@socket end |
#connection_pool ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 연결이 생성된 연결 풀입니다. nil일 수 있습니다.
132 133 134 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 132 def connection_pool [:connection_pool] end |
#연결 해제!(options = nil) ⇒ true
연결이 끊어지면 더 이상 사용해서는 안 됩니다. 연결 풀에서 새 연결을 가져와야 준비된 연결을 반환하거나 새 연결을 생성합니다. Linting이 활성화된 경우 연결이 끊긴 연결을 재사용하면 Error::LintError가 발생합니다. Linting이 활성화되지 않은 경우 경고가 기록됩니다.
이 메서드는 닫기가 성공하면 소켓을 nil로 설정하여 연결 객체를 변경합니다.
연결을 끊습니다.
310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 310 def 연결 해제!( = nil) # 참고: 여기서는 @closed가 참일 수 있지만 소켓이 있을 수도 있습니다. # @closed 플래그가 아닌 소켓을 확인합니다. @auth_mechanism = nil @last_checkin = nil 만약 소켓 시작 소켓.닫기 구출 StandardError nil end @socket = nil end @closed = true 중단되었습니다! 만약 && [:interrupted] # CMAP 사양 테스트를 충족하려면 다음과 같은 경우에도 닫기 이벤트를 게시합니다. # 소켓이 연결되지 않았으므로 준비 이벤트가 연결되지 않았습니다. # 게시됨). 그러나 닫기 이벤트를 게시했는지 여부를 추적하고 # 소켓이 다시 연결되지 않는 한 여러 번 게시합니다. # 이 경우 소켓 닫기당 한 번씩 닫기 이벤트를 게시합니다. 하지 않는 한 @close_event_published 이유 = && [:reason] publish_cmap_event( 모니터링::이벤트::Cmap::연결종료.신규( 주소, id, 이유 ) ) @close_event_published = true end true end |
#오류? ⇒ 부울
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
172 173 174 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 172 def 오류? !!@error end |
#중단되었습니다! ⇒ 객체
연결을 중단됨으로 표시합니다.
167 168 169 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 167 def 중단되었습니다! @interrupted = true end |
#중단되었나요? ⇒ true | false
연결이 중단되었는지 여부입니다.
중단된 연결은 이미 풀에서 제거되었으므로 풀에 다시 체크인해서는 안 됩니다.
162 163 164 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 162 def 중단? !!@interrupted end |
#pin(reason =: 커서) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
주어진 이유로 연결을 고정됨으로 표시합니다.
194 195 196 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 194 def 핀(이유 = :cursor) @pin_reasons << 이유 end |
#ping ⇒ true, false
MongoDB 서버 선택 사양에서는 더 이상 필요하지 않습니다.
이는 최적화를 위해 사전 직렬화된 핑 메시지를 사용합니다.
연결을 핑(ping)하여 서버가 명령에 응답하는지 확인합니다. 이는 서버 측에서 비차단입니다.
359 360 361 362 363 364 365 366 367 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 359 def ping sure_connected do |소켓| 회신 = add_server_diagnostics do 소켓.쓰기(PING_OP_MSG_BYTES) protocol::메시지.역직렬화(소켓, ) end 회신.문서[0][작업::결과::확인] == 1 end end |
#고정되었나요? ⇒ 부울
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
연결이 트랜잭션 또는 커서 작업에서 사용되는지 여부입니다.
고정된 연결은 유휴 상태이거나 오래된 경우 연결을 끊거나 연결 풀에서 제거해서는 안 됩니다.
@return [ true | false ] 연결 고정 여부입니다.
184 185 186 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 184 def 고정? !@pin_reasons.비어 있나요? end |
#record_checkin! ⇒ 자기
마지막 체크인 시간을 기록합니다.
388 389 390 391 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 388 def record_checkin! @last_checkin = 시간.지금 self end |
#socket_timeout ⇒ Float ~라고도 함: timeout
소켓에서 작업을 실행하는 데 걸리는 시간 제한을 가져옵니다.
374 375 376 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 374 def socket_timeout @timeout ||= [:socket_timeout] end |
#transport ⇒ Symbol | nil
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 연결의 전송 유형을 가져옵니다.
398 399 400 401 402 403 404 405 406 407 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 398 def 운송 반환 nil 만약 @socket.nil? case @socket when mongo::소켓::Unix :unix other :tcp end end |
#unpin(reason =: 커서) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
주어진 이유로 연결에서 핀을 제거합니다.
204 205 206 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 204 def 고정 해제(이유 = :cursor) @pin_reasons.삭제(이유) end |
#unpin_all ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
연결에서 모든 핀을 제거합니다.
211 212 213 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 211 def unpin_all @pin_reasons.지우기 end |