클래스: Mongo::Server::ConnectionPool::GenerationManager Private
- 상속:
-
객체
- 객체
- Mongo::Server::ConnectionPool::GenerationManager
- 다음에 정의됨:
- 빌드/ Ruby-driver-v2.19/lib/mongo/ 서버/connection_pool/generation_manager.rb
개요
이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
인스턴스 속성 요약 접기
- #서버 ⇒ 객체 읽기 전용 비공개
인스턴스 메서드 요약 접기
- #bump(service_id: nil) ⇒ 객체 비공개
- #생성(service_id: nil) ⇒ 객체 비공개
- #생성 _잠금 해제 (service_id: nil) ⇒ 객체 비공개
-
#initialize(서버: ) ⇒ 생성 관리자
생성자
비공개
생성 관리자의 새 인스턴스 입니다.
- #pipe_fds(service_id: nil) ⇒ 객체 비공개
- #remove_pipe_fds(generation, service_id: nil) ⇒ 객체 비공개
생성자 세부 정보
#initialize(서버: ) ⇒ 생성 관리자
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
생성 관리자의 새 인스턴스 를 반환합니다.
25 26 27 28 29 30 31 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/connection_pool/generation_manager.rb', 줄 25 def 초기화(서버:) @map = 해시.신규 { |해시, 키| 해시[키] = 1 } @pipe_fds = 해시.신규 { |해시, 키| 해시[키] = { 1 => IO.파이프 } } @server = 서버 @ 락 = 뮤텍스.신규 @scheduled_for_close = [] end |
인스턴스 속성 세부 정보
#서버 ⇒ 객체 (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
33 34 35 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/connection_pool/generation_manager.rb', 줄 33 def 서버 @server end |
인스턴스 메서드 세부 정보
#bump(service_id: nil) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/connection_pool/generation_manager.rb', 줄 66 def 범프(service_id: nil) @ 락.동기화 do close_all_scheduled 만약 service_id gen = @map[service_id] += 1 @pipe_fds[service_id] ||= {} @pipe_fds[service_id][gen] = IO.파이프 other # 서비스 ID가 제공되지 않은 경우 다음 두 가지 중 하나가 발생할 수 있습니다. # 발생 중입니다. # # 1. 풀은 로드 밸런서 가 아니며, 이 경우에만 # nil service_id의 생성을 증가시켜야 합니다. # 2. 풀은 로드 밸런서 에 있으며, 이 경우 다음을 수행해야 합니다. # 각 서비스에 대해 생성을 증가시킵니다. # # 맵의 모든 항목을 증가시키면 두 작업이 모두 수행됩니다. @map.각 do |k, v| gen = @map[k] += 1 @pipe_fds[service_id] ||= {} @pipe_fds[service_id][gen] = IO.파이프 end end end end |
#생성(service_id: nil) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
35 36 37 38 39 40 41 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/connection_pool/generation_manager.rb', 줄 35 def 생성(service_id: nil) validate_service_id!(service_id) @ 락.동기화 do @map[service_id] end end |
#생성 _잠금 해제 (service_id: nil) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
43 44 45 46 47 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/connection_pool/generation_manager.rb', 줄 43 def 생성_잠금 해제(service_id: nil) validate_service_id!(service_id) @map[service_id] end |
#pipe_fds(service_id: nil) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
49 50 51 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/connection_pool/generation_manager.rb', 줄 49 def pipe_fds(service_id: nil) @pipe_fds[service_id][@map[service_id]] end |
#remove_pipe_fds(generation, service_id: nil) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
53 54 55 56 57 58 59 60 61 62 63 64 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/connection_pool/generation_manager.rb', 줄 53 def remove_pipe_fds(생성, service_id: nil) validate_service_id!(service_id) r, w = @pipe_fds[service_id].삭제(생성) w.닫기 # 파이프 의 읽기 쪽이 닫히도록 예약합니다. 닫을 수 없습니다. # Kernel#select 호출을 기다려야 하므로 즉시 # 파이프의 일부가 닫혀 있는지 확인하고 소켓을 확인합니다. 이 # 소켓에서 읽기를 시도하고 다음을 기다릴 때 모든 일이 발생합니다. # 다시 준비됩니다. @scheduled_for_close << r end |