클래스: Mongo::Server::ConnectionPool::GenerationManager Private

상속:
객체
  • 객체
모두 표시
다음에 정의됨:
빌드/ Ruby-driver-v2.19/lib/mongo/ 서버/connection_pool/generation_manager.rb

개요

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

이후:

  • 2.0.0, 2.9.0에서 크게 다시 작성되었습니다.

인스턴스 속성 요약 접기

인스턴스 메서드 요약 접기

생성자 세부 정보

#initialize(서버: ) ⇒ 생성 관리자

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

생성 관리자의 새 인스턴스 를 반환합니다.

이후:

  • 2.0.0, 2.9.0에서 크게 다시 작성되었습니다.



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의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0, 2.9.0에서 크게 다시 작성되었습니다.



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의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0, 2.9.0에서 크게 다시 작성되었습니다.



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의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0, 2.9.0에서 크게 다시 작성되었습니다.



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의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0, 2.9.0에서 크게 다시 작성되었습니다.



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의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0, 2.9.0에서 크게 다시 작성되었습니다.



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의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0, 2.9.0에서 크게 다시 작성되었습니다.



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