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

상속:
객체
  • 객체
모두 표시
다음에 정의됨:
build/ruby-driver-v2.19/lib/mongo/session/session_pool.rb

개요

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

서버 세션의 풀입니다.

이후:

  • 2.5.0

클래스 메서드 요약 접기

인스턴스 메서드 요약 접기

생성자 세부 정보

#initialize(cluster) ⇒ SessionPool

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

SessionPool을 초기화합니다.

예시:

SessionPool.new(cluster)

매개변수:

  • cluster (Mongo::Cluster)

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

이후:

  • 2.5.0



52
53
54
55
56
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/session/session_pool.rb', 줄 52

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

클래스 메서드 세부 정보

.create(cluster) ⇒ 객체

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

SessionPool을 생성합니다.

예시:

SessionPool.create(cluster)

매개변수:

  • cluster (Mongo::Cluster)

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

이후:

  • 2.5.0



38
39
40
41
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/session/session_pool.rb', 줄 38

def self.create(cluster)
   = 신규(cluster)
  cluster.instance_variable_set(:@session_pool, )
end

인스턴스 메서드 세부 정보

#checkin(session) ⇒ 객체

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

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

예시:

세션을 체크인합니다.

pool.checkin(session)

매개변수:

이후:

  • 2.5.0



101
102
103
104
105
106
107
108
109
110
111
112
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/session/session_pool.rb', 줄 101

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

  @mutex.동기화 do
    정리하다!
    하지 않는 한 about_to_expire?(Session)
      @queue.unshift(Session)
    end
  end
end

#checkoutServerSession

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

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

예시:

세션을 확인합니다.

pool.checkout

반환합니다:

이후:

  • 2.5.0



78
79
80
81
82
83
84
85
86
87
88
89
90
91
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/session/session_pool.rb', 줄 78

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



120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/session/session_pool.rb', 줄 120

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



66
67
68
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/session/session_pool.rb', 줄 66

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