클래스: Mongo::Server::Connection
- 상속:
-
ConnectionBase
- 객체
- ConnectionCommon
- ConnectionBase
- Mongo::Server::Connection
- 확장자:
- 전달 가능
- 다음을 포함합니다.
- ID, 모니터링::게시 가능, 재시도 가능
- 다음에 정의됨:
- lib/ Mongo/ 서버/connection.rb
개요
이 클래스는 서버 및 그 동작에 대한 소켓 연결을 모델링합니다.
상수 요약 접기
- PING =
더 이상 사용되지 않습니다.
MongoDB 서버 선택 사양에서는 더 이상 필요하지 않습니다.
핑 명령입니다.
{ :ping => 1 }.동결
- PING_OP_MSG =
더 이상 사용되지 않습니다.
MongoDB 서버 선택 사양에서는 더 이상 필요하지 않습니다.
OP_MSG에 대한 핑 명령(서버 버전 >= 3.6).
{ :ping => 1, '$db' => Database::ADMIN }.동결
- PING_MESSAGE =
더 이상 사용되지 않습니다.
MongoDB 서버 선택 사양에서는 더 이상 필요하지 않습니다.
핑 메시지.
protocol::쿼리.신규(Database::ADMIN, Database::명령, ping, :limit => -1)
- PING_OP_MSG_MESSAGE =
더 이상 사용되지 않습니다.
MongoDB 서버 선택 사양에서는 더 이상 필요하지 않습니다.
메시지를 OP_MSG(서버 버전 >= 3.6)로 핑합니다.
protocol::메시지.신규([], {}, PING_OP_MSG)
- PING_BYTES =
더 이상 사용되지 않습니다.
MongoDB 서버 선택 사양에서는 더 이상 필요하지 않습니다.
핑 메시지를 원시 바이트로 표시합니다.
PING_MESSAGE.직렬화.to_s.동결
- PING_OP_MSG_BYTES =
더 이상 사용되지 않습니다.
MongoDB 서버 선택 사양에서는 더 이상 필요하지 않습니다.
원시 바이트로 핑 OP_MSG 메시지(서버 버전 >= 3.6).
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
연결이 중단되었는지 여부입니다.
-
#핀 ⇒ 객체
비공개
연결을 고정됨으로 표시합니다.
-
#ping ⇒ true, false
사용 중단
더 이상 사용되지 않습니다.
MongoDB 서버 선택 사양에서는 더 이상 필요하지 않습니다.
-
#고정되었나요? ⇒ 부울
비공개
연결이 트랜잭션 또는 커서 작업에서 사용되는지 여부입니다.
-
#record_checkin! ⇒ 자기
마지막 체크인 시간을 기록합니다.
-
#socket_timeout ⇒ Float (동의어: #timeout)
소켓에서 작업을 실행하는 데 걸리는 시간 제한을 가져옵니다.
-
#unpin ⇒ Object
비공개
연결을 고정되지 않음으로 표시합니다.
ID에 포함된 메서드
Retryable에 포함된 메서드
#read_Worker, #select_server, #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를 수행하지 않으므로 소켓, 핸드셰이크 또는 인증을 생성하지 않습니다. 통화 연결! 메서드를 사용하여 네트워크 연결을 생성합니다.
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 106 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 @pinned = 거짓 publish_cmap_event( 모니터링::이벤트::Cmap::connectionCreated 이벤트.신규(주소, id) ) end |
인스턴스 속성 세부 정보
#global_id ⇒ 정수 (읽기 전용)
모든 연결에서.
140 141 142 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 140 def global_id @global_id end |
#ID ⇒ 정수 (읽기 전용)
동일한 서버 객체에 대한 연결을 통해 전달됩니다.
136 137 138 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 136 def id @id end |
#last_checkin ⇒ 시간 (읽기 전용)
연결이 풀에 마지막으로 체크인된 시간을 반환합니다.
130 131 132 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 130 def last_checkin @last_checkin end |
인스턴스 메서드 세부 정보
#닫았나요? ⇒ true | false
연결이 닫혔는지 여부입니다.
닫힌 연결은 더 이상 사용하지 않아야 합니다. 대신 연결 풀에서 새 연결을 얻습니다.
166 167 168 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 166 def 닫힘? !!@closed end |
#연결합니다!(context = nil) ⇒ true
이 메서드는 이전에 소켓이 존재하지 않았던 경우 소켓을 설정하여 연결 객체를 변경합니다.
대상 주소에 대한 네트워크 연결을 설정합니다.
연결이 이미 설정된 경우 이 메서드는 아무 작업도 수행하지 않습니다.
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 229 def 연결!(컨텍스트 = nil) raise_if_closed! 하지 않는 한 @socket @socket = create_socket(컨텍스트) @description, @compressor = do_connect 만약 서버.load_balancer? 만약 Lint.활성화? 하지 않는 한 service_id 올리다 오류::Internal DriverError, "로드 밸런서에 대한 연결이며 여기에 service_id가 설정되어 있어야 하지만," end 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
연결이 연결되었으며 중단되거나 닫히지 않았거나 오류가 발생하지 않았는지 여부입니다.
154 155 156 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 154 def 연결됨? !닫힘? && !오류? && !중단? && !!@socket end |
#connection_pool ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 연결이 생성된 연결 풀입니다. nil일 수 있습니다.
146 147 148 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 146 def connection_pool [:connection_pool] end |
#연결 해제!(options = nil) ⇒ true
연결이 끊어지면 더 이상 사용해서는 안 됩니다. 연결 풀에서 새 연결을 가져와야 준비된 연결을 반환하거나 새 연결을 생성합니다. Linting이 활성화된 경우 연결이 끊긴 연결을 재사용하면 Error::LintError가 발생합니다. Linting이 활성화되지 않은 경우 경고가 기록됩니다.
이 메서드는 닫기가 성공하면 소켓을 nil로 설정하여 연결 객체를 변경합니다.
연결을 끊습니다.
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 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 311 def 연결 해제!( = nil) # 참고: 여기서는 @closed가 참일 수 있지만 소켓이 있을 수도 있습니다. # @closed 플래그가 아닌 소켓을 확인합니다. @auth_mechanism = nil @last_checkin = nil 만약 소켓 소켓.닫기 구출 nil @socket = nil end @closed = true 중단되었습니다! 만약 && [:interrupted] # CMAP 사양 테스트를 충족하려면 다음과 같은 경우에도 닫기 이벤트를 게시합니다. # 소켓이 연결되지 않았으므로 준비 이벤트가 연결되지 않았습니다. # 게시됨). 그러나 닫기 이벤트를 게시했는지 여부를 추적하고 # 소켓이 다시 연결되지 않는 한 여러 번 게시합니다. # 이 경우 소켓 닫기당 한 번씩 닫기 이벤트를 게시합니다. 하지 않는 한 @close_event_published 이유 = && [:reason] publish_cmap_event( 모니터링::이벤트::Cmap::연결종료.신규( 주소, id, 이유, ), ) @close_event_published = true end true end |
#오류? ⇒ 부울
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
186 187 188 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 186 def 오류? !!@error end |
#중단되었습니다! ⇒ 객체
연결을 중단됨으로 표시합니다.
181 182 183 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 181 def 중단되었습니다! @interrupted = true end |
#중단되었나요? ⇒ true | false
연결이 중단되었는지 여부입니다.
중단된 연결은 이미 풀에서 제거되었으므로 풀에 다시 체크인해서는 안 됩니다.
176 177 178 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 176 def 중단? !!@interrupted end |
#핀 ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
연결을 고정됨으로 표시합니다.
205 206 207 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 205 def 핀 @pinned = true end |
#ping ⇒ true, false
MongoDB 서버 선택 사양에서는 더 이상 필요하지 않습니다.
이는 최적화를 위해 사전 직렬화된 핑 메시지를 사용합니다.
연결을 핑(ping)하여 서버가 명령에 응답하는지 확인합니다. 이는 서버 측에서 비차단입니다.
356 357 358 359 360 361 362 363 364 365 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 356 def ping 바이트 = 기능.op_msg_enabled? ? PING_OP_MSG_BYTES : PING_BYTES sure_connected do |소켓| 회신 = add_server_diagnostics do 소켓.쓰기(바이트) protocol::메시지.역직렬화(소켓, ) end 회신.문서[0][작업::결과::확인] == 1 end end |
#고정되었나요? ⇒ 부울
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
연결이 트랜잭션 또는 커서 작업에서 사용되는지 여부입니다.
고정된 연결은 유휴 상태이거나 오래된 경우 연결을 끊거나 연결 풀에서 제거해서는 안 됩니다.
# @return [ true | false ] 연결 고정 여부입니다.
198 199 200 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 198 def 고정? @pinned end |
#record_checkin! ⇒ 자기
마지막 체크인 시간을 기록합니다.
386 387 388 389 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 386 def record_checkin! @last_checkin = 시간.지금 self end |
#socket_timeout ⇒ Float ~라고도 함: timeout
소켓에서 작업을 실행하는 데 걸리는 시간 제한을 가져옵니다.
372 373 374 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 372 def socket_timeout @timeout ||= [:socket_timeout] end |
#unpin ⇒ Object
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
연결을 고정되지 않음으로 표시합니다.
212 213 214 |
# 파일 'lib/ Mongo/ 서버/connection.rb', 줄 212 def 고정 해제 @pinned = 거짓 end |