클래스: 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



37
38
39
40
41
# 파일 'lib/ Mongo/session/session_pool.rb', 줄 37

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

인스턴스 메서드 세부 정보

#checkin(session) ⇒ 객체

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

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

예시:

세션을 체크인합니다.

pool.checkin(session)

매개변수:

이후:

  • 2.5.0



86
87
88
89
90
91
92
93
94
95
# 파일 'lib/ Mongo/session/session_pool.rb', 줄 86

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

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

#checkoutServerSession

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

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

예시:

세션을 확인합니다.

pool.checkout

반환합니다:

이후:

  • 2.5.0



63
64
65
66
67
68
69
70
71
72
73
74
75
76
# 파일 'lib/ Mongo/session/session_pool.rb', 줄 63

def 결제
  @mutex.동기화 do
    루프 do
      만약 @queue.비어 있나요?
        반환 ServerSession.신규
      other
        Session = @queue.shift
        하지 않는 한 about_to_expire?(Session)
          반환 Session
        end
      end
    end
  end
end

#end_sessions객체

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

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

예시:

모든 세션을 종료합니다.

pool.end_sessions

이후:

  • 2.5.0



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# 파일 'lib/ Mongo/session/session_pool.rb', 줄 103

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



51
52
53
# 파일 'lib/ Mongo/session/session_pool.rb', 줄 51

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