클래스: Mongo::Session::SessionPool Private

상속:
객체
  • 객체
모두 표시
다음에 정의됨:
lib/ Mongo/session/session_pool.rb

개요

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

서버 세션의 풀입니다.

이후:

  • 2.5.0

인스턴스 메서드 요약 접기

생성자 세부 정보

#initialize(cluster) ⇒ SessionPool

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

SessionPool을 초기화합니다.

예시:

SessionPool.new(cluster)

매개변수:

  • cluster (Mongo::Cluster)

    이 세션 풀과 연결될 클러스터입니다.

이후:

  • 2.5.0



34
35
36
37
38
# 파일 'lib/ Mongo/session/session_pool.rb', 줄 34

def 초기화(cluster)
  @queue = []
  @mutex = 뮤텍스.신규
  @cluster = cluster
end

인스턴스 메서드 세부 정보

#checkin(session) ⇒ 객체

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

서버 세션을 풀에 체크인합니다.

예시:

세션을 체크인합니다.

pool.checkin(session)

매개변수:

다음을 발생시킵니다.

  • (ArgumentError)

이후:

  • 2.5.0



79
80
81
82
83
84
85
86
# 파일 'lib/ Mongo/session/session_pool.rb', 줄 79

def checkin(Session)
  올리다 ArgumentError, '세션은 nil일 수 없습니다.' 만약 Session.nil?

  @mutex.동기화 do
    정리하다!
    @queue.unshift(Session) 만약 return_to_queue?(Session)
  end
end

#checkoutServerSession

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

풀에서 서버 세션을 확인합니다.

예시:

세션을 확인합니다.

pool.checkout

반환합니다:

이후:

  • 2.5.0



60
61
62
63
64
65
66
67
68
69
# 파일 'lib/ Mongo/session/session_pool.rb', 줄 60

def 결제
  @mutex.동기화 do
    루프 do
      반환 ServerSession.신규 만약 @queue.비어 있나요?

      Session = @queue.shift
      반환 Session 하지 않는 한 about_to_expire?(Session)
    end
  end
end

#end_sessions객체

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

서버 에 endSessions 명령을 전송하여 풀의 모든 세션을 종료합니다.

예시:

모든 세션을 종료합니다.

pool.end_sessions

이후:

  • 2.5.0



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# 파일 'lib/ Mongo/session/session_pool.rb', 줄 94

def end_sessions
  까지 @queue.비어 있나요?
    서버 = ServerSelector.get(모드: :primary_preferred).select_server(@cluster)
    op = 작업::명령.신규(
      선택기: {
        endSessions: @queue.shift(10_000).map(&:session_id),
      },
      db_name: Database::ADMIN
    )
    컨텍스트 = 작업::Context.신규(옵션: {
                                       server_api: 서버.옵션[:server_api],
                                     })
    op.실행(서버, 컨텍스트: 컨텍스트)
  end
구출 mongo::오류, 오류::AuthError
end

#검사string

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

검사에 사용할 형식이 지정된 string 을 가져옵니다.

예시:

세션 풀 객체를 검사합니다.

session_pool.inspect

반환합니다:

  • (string)

    세션 풀 검사.

이후:

  • 2.5.0



48
49
50
# 파일 'lib/ Mongo/session/session_pool.rb', 줄 48

def 검사
  "#<Mongo::Session::SessionPool:0x#{object_id} current_size=#{@queue.size}>"
end