类:Mongo::Crypt::Binary Private
- 继承:
-
对象
- 对象
- Mongo::Crypt::Binary
- 定义于:
- 构建/ruby-driver-v2.19/lib/ mongo /crypt/binary.rb
Overview
此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。
mongocrypt_binary_t 的包装器,而 mongocrypt_binary_t 是 uint- 8字节数据的非拥有缓冲区。 每个 Binary 实例都会保留传递给它的数据的副本,以使该数据保持活动状态。
类方法摘要折叠
-
。 from_data (data) ⇒ Mongo::Crypt::Binary
private
使用string初始化 Binary对象。
-
。 from_pointer (指针)→ Mongo::Crypt::Binary
private
从指向 mongocrypt_binary_t 对象的现有指针初始化二进制对象。
-
。 wrapp_string (str) ⇒ 对象
private
使用 mongocrypt_binary_t 包装string ,生成指向包装结构体的 FFI::Pointer。
实例方法摘要折叠
-
#initialize (data: nil,pointer: nil) ⇒ 二进制
构造函数
private
创建一个包装字节string的新 Binary对象。
-
# ref ⇒ FFI::Pointer
private
返回对底层 mongocrypt_binary_t 对象的引用。
-
# to_s ⇒ string
private
以string形式返回存储的数据。
-
# 写入 (data) ⇒ true
private
覆盖由此 Binary 对象包装的现有数据。
构造函数详情
#initialize(data: nil, pointer: nil) ⇒ Binary
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
使用string或指针初始化 Binary 对象时,
创建包装字节string的新 Binary 对象
建议您使用 #self.from_pointer 或 #self.from_data 方法
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 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/binary.rb', 第39行 def 初始化(数据: nil, 指针: nil) if 数据 # 将数据string表示为 uint-8 字节的大量 字节 = 数据.unpack(' C* ') # FFI::MemoryPointer 超出作用域时会自动释放内存 @data_p = FFI::内存指针.new(字节.长度) .write_array_of_uint 8(字节) # FFI::AutoPointer 使用自定义发布策略来自动释放 # 当此对象超出作用域时的指针 @bin = FFI::AutoPointer.new( 绑定.mongocrypt_binary_new_from_data(@data_p, 字节.长度), 绑定.方法(:mongocrypt_binary_destroy) ) elsif 指针 # 如果 Binary 类以这种方式使用,则意味着该指针 # 用于在某处分配根本的mongocrypt_binary_t对象 # else. 此类没有责任取消数据分配。 @bin = 指针 else # FFI::AutoPointer 使用自定义发布策略来自动释放 # 当此对象超出作用域时的指针 @bin = FFI::AutoPointer.new( 绑定.mongocrypt_binary_new, 绑定.方法(:mongocrypt_binary_destroy) ) end end |
类方法详细信息
。 from_data (data) ⇒ Mongo::Crypt::Binary
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
使用string初始化 Binary对象。 二进制对象将存储指定string的副本,并在超出范围时销毁分配的内存。
87 88 89 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/binary.rb', 第87行 def self.from_data(数据) self.new(数据: 数据) end |
。 from_pointer (指针)→ Mongo::Crypt::Binary
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
从指向 mongocrypt_binary_t 对象的现有指针初始化二进制对象。
76 77 78 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/binary.rb', 第76行 def self.from_pointer(指针) self.new(指针: 指针) end |
。 wrapp_string (str) ⇒对象
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
使用 mongocrypt_binary_t 包装string ,生成指向包装结构体的 FFI::Pointer。
145 146 147 148 149 150 151 152 153 154 155 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/binary.rb', 第145行 def self.wrapp_string(str) binary_p = 绑定.mongocrypt_binary_new_from_data( FFI::内存指针.from_string(str), str.bytesize, ) 开始 产量 binary_p 确保 绑定.mongocrypt_binary_destroy(binary_p) end end |
实例方法详细信息
# ref ⇒ FFI::Pointer
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回对根本的mongocrypt_binary_t对象的引用
139 140 141 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/binary.rb', 第139行 def ref @bin end |
# to_s ⇒ string
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回以string形式存储的数据
129 130 131 132 133 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/binary.rb', 第129行 def to_s str_p = 绑定.mongocrypt_binary_data(ref) len = 绑定.mongocrypt_binary_len(ref) str_p.read_string(len) end |
# 写入 (data) ⇒ true
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
传入的数据占用的内存不得超过
覆盖由此 Binary 对象包装的现有数据
分配给底层 mongocrypt_binary_t 对象的原始内存。 除非 libmongocrypt 要求,否则请勿使用此方法。
超过最初分配的大小或写入已拥有数据的对象时。
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/binary.rb', 第104行 def 写(数据) if @data 提高 ArgumentError, '无法写入拥有的二进制文件' end #写入的string不能长于当前分配的空间 # 通过 mongocrypt_binary_t对象 str_p = 绑定.mongocrypt_binary_data(ref) len = 绑定.mongocrypt_binary_len(ref) if len < 数据.bytesize 提高 ArgumentError.new( " Cannot write #{ data . bytesize } bytes of data to a Binary object " + “使用#{ Binding . mongocrypt_binary_len ( @bin ) }字节初始化。 ” ) end str_p.put_bytes(0, 数据) true end |