类:Mongo::Crypt::Status Private

继承:
对象
  • 对象
显示全部
定义于:
lib/ Mongo/crypt/status.rb

Overview

此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。

mongocrypt_status_t 的包装器,表示 mongocrypt_t处理的状态。

类方法摘要折叠

实例方法摘要折叠

构造函数详情

#initialize (pointer: nil) ⇒状态

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

注意:

使用指针初始化 Status对象时,

创建新的状态对象

建议您使用 #self.from_pointer 方法

参数:

  • 指针 ( FFI::Pointer | nil ) (默认为: nil

    指向现有 mongocrypt_status_t对象的指针。 默认为 nil。



33
34
35
36
37
38
39
40
41
42
43
# File 'lib/ Mongo/crypt/status.rb', line 33

def 初始化(指针: nil)
  # 如果传入了指针,则该类不负责
  # 销毁该指针并释放数据。
  #
  # FFI::AutoPointer 使用自定义发布策略来自动释放
  # 当此对象超出作用域时的指针
  @status = 指针 || FFI::AutoPointer.new(
    绑定.mongocrypt_status_new,
    绑定.方法(:mongocrypt_status_destroy)
  )
end

类方法详细信息

from_pointer (指针)→ Mongo::Crypt::Status

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

从指向 mongocrypt_status_t 对象的现有指针初始化状态对象。

参数:

  • 指针 ( FFI::Pointer )

    指向现有 mongocrypt_status_t对象的指针

返回:



52
53
54
# File 'lib/ Mongo/crypt/status.rb', line 52

def self.from_pointer(指针)
  new(指针: 指针)
end

实例方法详细信息

# code整数

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回与状态关联的整数代码

返回:

  • ( Integer )

    状态代码,默认为0



88
89
90
# File 'lib/ Mongo/crypt/status.rb', line 88

def 代码
  绑定.mongocrypt_status_code(@status)
end

#标签符号

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回状态的标签

返回:

  • (符号)

    状态标签可以是 :ok、:error_kms 或 :error_client,默认为 :ok



81
82
83
# File 'lib/ Mongo/crypt/status.rb', line 81

def 标签
  绑定.mongocrypt_status_type(@status)
end

# messagestring

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回状态消息

返回:

  • ( string )

    状态消息,默认为空string



95
96
97
98
# File 'lib/ Mongo/crypt/status.rb', line 95

def message
  message = 绑定.mongocrypt_status_message(@status, nil)
  message || ' '
end

#可以吗?布尔

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

检查状态是否标记为 :ok

返回:

  • ( Boolean )

    状态是否为 :ok



103
104
105
# File 'lib/ Mongo/crypt/status.rb', line 103

def 确定吗?
  绑定.mongocrypt_status_ok(@status)
end

# Raise_crypt_error ( KMS : false) ⇒对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

注意:

如果KMS参数为 false,则错误可能仍来自KMS 。 KMS参数只是强制将所有错误视为KMS错误。

引发与此状态中存储的信息相对应的 Mongo::Error:CryptError

如果 self.ok? 则不执行任何操作为 true

参数:

  • KMS ( true | false ) (默认为: false

    操作是否针对KMS。



125
126
127
128
129
130
131
132
133
134
135
# File 'lib/ Mongo/crypt/status.rb', line 125

def Raise_crypt_error(KMS : false)
  return if 确定吗?

  错误 = if KMS || 标签 == :error_kms
            错误::KmsError.new(message, 代码: 代码)
          else
            错误::CryptError.new(message, 代码: 代码)
          end

  提高 错误
end

# refFFI::Pointer

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回对根本的mongocrypt_status_t对象的引用

返回:

  • ( FFI::Pointer )

    指向根本的mongocrypt_status_t对象的指针



111
112
113
# File 'lib/ Mongo/crypt/status.rb', line 111

def ref
  @status
end

# 更新 (label, code, message) ⇒ Mongo::Crypt::Status

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

在状态上设置标签、代码和消息

参数:

  • 标签 (符号)

    :ok、:error_client 或 :error_kms 之一

  • 代码 整数
  • message string

返回:



63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/ Mongo/crypt/status.rb', line 63

def update(标签, 代码, message)
  除非 %i[Ok error_client error_kms].包括?(标签)
    提高 ArgumentError.new(
      " #{ label }对于 Mongo::Crypt::Status 标签来说是无效值。 " +
      '标签必须为以下值之一::ok,:error_client,:error_kms'
    )
  end

  message_length = message ? message.bytesize + 1 : 0
  绑定.mongocrypt_status_set(@status, 标签, 代码, message, message_length)

  self
end