클래스: Mongo::Operation::Context Private

상속:
CsotTimeoutHolder 모두 표시
다음에 정의됨:
lib/ Mongo/operation/context.rb

개요

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

작업에 대한 컨텍스트입니다.

작업 실행에 대한 결정을 내리는 데 필요한 다양한 객체를 단일 컨테이너 에 담고, 포함된 객체에 대한 파사드 메서드를 제공합니다.

컨텍스트에는 작업에 대한 매개변수가 포함되어 있으므로 작업이 준비되는 동안에는 컨텍스트에서 아무 것도 변경되지 않아야 합니다. 작업 결과가 처리되는 동안 컨텍스트에서 반환된 데이터가 변경될 수 있지만(예: 트랜잭션이 중단된 경우), 이 시점이 되면 작업은 더 이상 컨텍스트에서 아무 것도 읽지 않아야 합니다. 컨텍스트 데이터는 작업 실행 중에 변경될 수 있으므로 컨텍스트 객체를 여러 작업에 재사용해서는 안 됩니다.

인스턴스 속성 요약 접기

CsotTimeoutHolder에서상속된 속성

#deadline, #operation_timeout, #timeout_sec

인스턴스 메서드 요약 접기

CsotTimeoutHolder에서상속된 메서드

#check_timeout!, #csot?, #remaining_timeout_ms, #remaining_timeout_ms!, #remaining_timeout_sec, #remaining_timeout_sec!, #timeout?, #timeout_expired?

생성자 세부 정보

#initialize(클라이언트: nil, session: nil, connection_global_id: nil, operation_timeout: {}, view: nil, options: nil) ⇒ 컨텍스트

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

Context의 새 인스턴스 를 반환합니다.



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
# 파일 'lib/ Mongo/operation/context.rb', 줄 38

def 초기화(
  클라이언트: nil,
  세션: nil,
  connection_global_id: nil,
  operation_timeout: {},
  보기: nil,
  옵션: nil
)
  만약 옵션
    만약 고객
      올리다 ArgumentError, '클라이언트와 옵션을 모두 지정할 수 없습니다.'
    end

    만약 Session
      올리다 ArgumentError, '세션과 옵션을 모두 지정할 수 없습니다.'
    end
  end

  만약 connection_global_id && Session&.pinned_connection_global_id
    올리다 ArgumentError, 세션 이미 연결에 고정된 상태에서 컨텍스트를 연결에 고정하려고 합니다.'
  end

  @client = 고객
  @session = Session
  @view = 보기
  @connection_global_id = connection_global_id
  @options = 옵션
  super(세션: Session, operation_timeout: operation_timeout)
end

인스턴스 속성 세부 정보

#클라이언트객체 (읽기 전용)

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



68
69
70
# 파일 'lib/ Mongo/operation/context.rb', 줄 68

def 고객
  @client
end

#options객체 (읽기 전용)

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



71
72
73
# 파일 'lib/ Mongo/operation/context.rb', 줄 71

def 옵션
  @options
end

#세션객체 (읽기 전용)

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



69
70
71
# 파일 'lib/ Mongo/operation/context.rb', 줄 69

def Session
  @session
end

#보기객체 (읽기 전용)

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



70
71
72
# 파일 'lib/ Mongo/operation/context.rb', 줄 70

def 보기
  @view
end

인스턴스 메서드 세부 정보

#aborting_transaction?부울

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

반환합니다:

  • (부울)


105
106
107
# 파일 'lib/ Mongo/operation/context.rb', 줄 105

def aborting_transaction?
  in_transaction? && Session.aborting_transaction?
end

#any_retry_writes?부울

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

반환합니다:

  • (부울)


117
118
119
# 파일 'lib/ Mongo/operation/context.rb', 줄 117

def any_retry_writes?
  Modern_retry_writes? || legacy_retry_writes?
end

#committing_transaction?부울

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

반환합니다:

  • (부울)


101
102
103
# 파일 'lib/ Mongo/operation/context.rb', 줄 101

def committing_transaction?
  in_transaction? && Session.committing_transaction?
end

#connection_global_id객체

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



89
90
91
# 파일 'lib/ Mongo/operation/context.rb', 줄 89

def connection_global_id
  @connection_global_id || Session&.pinned_connection_global_id
end

# 암호해독(cmd) ⇒ 객체

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



159
160
161
# 파일 'lib/ Mongo/operation/context.rb', 줄 159

def 암호 해독(cmd)
  암호화기.암호 해독(cmd, self)
end

# 암호를해독하시겠습니까?부울

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

반환합니다:

  • (부울)


155
156
157
# 파일 'lib/ Mongo/operation/context.rb', 줄 155

def 해독?
  !!고객&.암호화기
end

#암호화(db_name, cmd) ⇒ 객체

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



151
152
153
# 파일 'lib/ Mongo/operation/context.rb', 줄 151

def 암호화(db_name, cmd)
  암호화기.암호화(db_name, cmd, self)
end

#암호화?부울

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

반환합니다:

  • (부울)


147
148
149
# 파일 'lib/ Mongo/operation/context.rb', 줄 147

def 암호화?
  고객&.암호화기&.암호화? || 거짓
end

#encrypter객체

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



163
164
165
166
167
168
169
# 파일 'lib/ Mongo/operation/context.rb', 줄 163

def 암호화기
  만약 고객&.암호화기
    고객.암호화기
  other
    올리다 오류::Internal DriverError, '암호화는 암호화 를 수행할 때만 액세스해야 합니다.'
  end
end

#in_transaction?부울

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

반환합니다:

  • (부울)


93
94
95
# 파일 'lib/ Mongo/operation/context.rb', 줄 93

def in_transaction?
  Session&.in_transaction? || 거짓
end

#검사객체

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



171
172
173
# 파일 'lib/ Mongo/operation/context.rb', 줄 171

def 검사
  "#<#{자기.클래스} connection_global_id=#{connection_global_id.검사} 마감 시간=#{마감일.검사} options=#{options.검사} operation_timeout=#{operation_timeouts.검사} }>"
end

#legacy_retry_writes?부울

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

반환합니다:

  • (부울)


113
114
115
# 파일 'lib/ Mongo/operation/context.rb', 줄 113

def legacy_retry_writes?
  고객 && !고객.옵션[:retry_writes] && 고객.max_write_retries > 0
end

#Modern_retry_writes?부울

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

반환합니다:

  • (부울)


109
110
111
# 파일 'lib/ Mongo/operation/context.rb', 줄 109

def Modern_retry_writes?
  고객 && 고객.옵션[:retry_writes]
end

#refresh(connection_global_id: @connection_global_id, timeout_ms: nil, view: nil) ⇒ Operation::Context

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

기한을 새로 고치고 현재 순간을 기준으로 한 새 Operation::Context를 반환합니다.

반환합니다:



77
78
79
80
81
82
83
84
85
86
87
# 파일 'lib/ Mongo/operation/context.rb', 줄 77

def 새로 고침(connection_global_id: @connection_global_id, timeout_ms: nil, 보기: nil)
  operation_timeout = @operation_timeout
  operation_timeout = operation_timeout.merge(operation_timeout_ms: timeout_ms) 만약 timeout_ms

  self.클래스.신규(클라이언트: 고객,
                 세션: Session,
                 connection_global_id: connection_global_id,
                 operation_timeout: operation_timeout,
                 보기: 보기 || self.보기,
                 옵션: 옵션)
end

#다시 시도하시겠습니까?부울

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

작업이 재시도인지(true) 또는 초기 시도인지(false)인지 여부입니다.

반환합니다:

  • (부울)


130
131
132
# 파일 'lib/ Mongo/operation/context.rb', 줄 130

def 재시도?
  !!@is_retry
end

#server_api객체

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



121
122
123
124
125
126
127
# 파일 'lib/ Mongo/operation/context.rb', 줄 121

def server_api
  만약 고객
    고객.옵션[:server_api]
  elsif 옵션
    옵션[:server_api]
  end
end

#startup_transaction?부울

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

반환합니다:

  • (부울)


97
98
99
# 파일 'lib/ Mongo/operation/context.rb', 줄 97

def startup_transaction?
  Session&.startup_transaction? || 거짓
end

#with(**opts) ⇒ 객체

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

제공된 인수에 따라 매개변수가 변경된 새 컨텍스트를 반환합니다.

매개변수:

  • opts (해시)

    사용자 지정 가능한 옵션 세트

옵션 해시(**opts):

  • :is_retry (true|false)

    작업이 재시도인지 첫 번째 시도인지 여부입니다.



139
140
141
142
143
144
145
# 파일 'lib/ Mongo/operation/context.rb', 줄 139

def (**opts)
  dup. do |copy|
    opts. do |k, v|
      copy.instance_variable_set("@#{k}", v)
    end
  end
end