모듈: Mongo::CursorHost

포함 항목:
Mongo::Collection::View::Iterable, Database::View, Index::View
다음에 정의됨:
lib/mongo/cursor_host.rb

개요

커서를 ' 호스팅하다'(또는 생성)하는 엔터티에 대한 설정 및 구성을 구현하는 공통된 관심사입니다.

이 고려 사항이 포함된 클래스 또는 모듈은 다음 구현 해야 합니다.

* timeout_ms -- this must return either the operation level timeout_ms
    (if set) or an inherited timeout_ms from a hierarchically higher
    level (if any).

인스턴스 속성 요약 접기

인스턴스 메서드 요약 접기

인스턴스 속성 세부 정보

#cursornil | Cursor (readonly)

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

이 뷰와 연결된 커서 (있는 경우)를 반환합니다.

반환합니다:

  • (nil | Cursor)

    커서(있는 경우).



17
18
19
# 파일 'lib/ Mongo/cursor_host.rb', 줄 17

def cursor
  @cursor
end

#timeout_mode:cursor_Lifetime | :iteration (읽기 전용)

이 객체 에서 사용할 시간 초과 모드 반환합니다.

반환합니다:

  • (:cursor_Lifetime | :iteration)

    이 객체 에서 사용할 시간 초과 모드 .



21
22
23
# 파일 'lib/ Mongo/cursor_host.rb', 줄 21

def timeout_mode
  @timeout_mode
end

인스턴스 메서드 세부 정보

#validate_timeout_mode!(options, forbid: []) ⇒ Object

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

시간 초과 모드 지정된 다른 옵션에 적합한지 확인합니다.

Rubocop:메트릭 비활성화

매개변수:

  • 옵션 (해시)

    검사할 옵션입니다.

  • forbid (Array<기호>) (기본값: [])

    이 클래스에 대해 금지할 옵션 목록입니다.

다음을 발생시킵니다.

  • (ArgumentError)

    일치하지 않거나 호환되지 않는 옵션이 감지된 경우



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# 파일 'lib/ Mongo/cursor_host.rb', 줄 35

def validate_timeout_mode!(옵션, forbid: [])
  forbid. do ||
    올리다 ArgumentError, 여기에 "#{key} 는 허용되지 않습니다" 만약 옵션.키?()
  end

  cursor_type = 옵션[:cursor_type]
  timeout_mode = 옵션[:timeout_mode]

  만약 timeout_ms
    # "테일 커서(tailable cursor)는 다음에 대한 ITERATION 값만 지원 .
    # timeoutMode 옵션. 이는 기본값 이며 드라이버는 반드시
    옵션이 CURSOR_LIFETIME으로 설정하다 경우 # 오류가 발생합니다."
    만약 cursor_type
      timeout_mode ||= :iteration
      만약 timeout_mode == :cursor_Lifetime
        올리다 ArgumentError, ' 테일 커서(tailable cursor)는 `timeout_mode: :iteration`만 지원.
      end

      # "[maxAwaitTimeMS] 옵션이 설정하다 경우 드라이버는 반드시 오류를 발생시켜야 합니다.
      # timeoutMS는 0이 아닌 값으로 설정하다 되고 maxAwaitTimeMS는 다음과 같습니다.
      # timeoutMS보다 크거나 같습니다."
      max_await_time_ms = 옵션[:max_await_time_ms] || 0
      만약 cursor_type == :tailable_await && max_await_time_ms >= timeout_ms
        올리다 ArgumentError, ' :max_await_time_ms 가 >= :timeout_ms '가 아니어야 합니다.
      end
    other
      # "테일 커서(tailable cursor)가 아닌 커서의 경우 기본값 은 timeoutMode입니다.
      #은 CURSOR_LIFETIME입니다."
      timeout_mode ||= :cursor_Lifetime
    end
  elsif timeout_mode
    # "timeoutMode가 설정하다 되어 있고 timeoutMS가 설정되어 있지 않으면 드라이버에 오류가 발생해야 합니다."
    올리다 ArgumentError, ' :timeout_mode가 설정하다 경우 ':timeout_ms를 설정하다 해야 합니다.
  end

  만약 timeout_mode == :iteration && response_to?(: 쓰기 (write)?) && 쓰기 (write)?
    올리다 ArgumentError, 'timeout_mode=:iteration은 $out 또는 $merge가 있는 집계 파이프라인에 대해 지원되지 않습니다. '
  end

  # 옵션을 업데이트하는 대신 인스턴스 변수로 설정하다 .
  # 커서 유형이 변경되면(예: #configure()를 통해) 새로운
  # View 인스턴스 다른 기본값 timeout_mode를 선택할 수 있어야 합니다.
  # 처음에 timeout_mode가 설정하다 되지 않은 경우.
  @timeout_mode = timeout_mode
end