Clase: Mongo::Crypt::Binary Privado
- Hereda:
-
Objeto
- Objeto
- Mongo::Crypt::Binary
- Definido en:
- lib/mongo/crypt/binary.rb
Overview
Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.
Un contenedor alrededor de mongocrypt_binary_t, un búfer no propietario de datos de bytes de8 uint. Cada instancia de Binario conserva una copia de los datos que se le hayan pasado para asegurarse de que los datos se mantengan disponibles.
Resumen del método de clase colapsar
-
.from_data(data) ⇒ Mongo::Crypt::Binary
privado
Inicializar un objeto Binario con una string.
-
.from_pointer(pointer) ⇒ Mongo::Crypt::Binary
privado
Inicializa un objeto binario desde un puntero existente a un objeto mongocrypt_binary_t.
-
.wrap_string(str) ⇒ Objeto
privado
Envuelve un String con un mongocrypt_binary_t, produciendo un FFI::Pointer a la estructura envuelta.
Resumen del método de instancia colapsar
-
#initialize(data: nil, pointer: nil) ⇒ Binary
constructor
privado
Crea un nuevo objeto binario que encierra un string de bytes.
-
#ref ⇒ FFI::Pointer
privado
Devuelve la referencia al objeto subyacente mongocrypt_binary_t.
-
#to_s ⇒ String
privado
Devuelve los datos almacenados como string.
-
#guardar(data) ⇒ true
privado
Sobrescribir los datos existentes envueltos por este objeto binario.
Detalles del Constructor
#initialize(data: nil, pointer: nil) ⇒ Binary
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Al inicializar un objeto Binario con un string o un puntero,
Crea un nuevo objeto binario que envuelva una string de bytes
se recomienda que utilices #self.from_pointer o #self.from_data métodos
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 |
# Archivo 'lib/mongo/crypt/binary.rb', línea 37 def inicializar(datos: nulo, puntero: nulo) si Datos # Representar la data string como un arreglo de bytes uint-8 bytes = Datos.desempaquetar('C*') # FFI::MemoryPointer libera automáticamente la memoria cuando sale del alcance @data_p = FFI::MemoryPointer.Nuevo(bytes.longitud) .escribir_array_de_uint8(bytes) # FFI::AutoPointer utiliza una estrategia de liberación personalizada para liberar automáticamente # el puntero una vez que este objeto salga del alcance @bin = FFI::Apuntador automático.Nuevo( Vinculante.mongocrypt_binary_new_from_data(@data_p, bytes.longitud), Vinculante.Método(destroy_binary_mongocrypt) ) elsif puntero # Si se utiliza la clase Binary de esta forma, significa que el puntero # para el objeto subyacente mongocrypt_binary_t se asigna en algún lugar # else. No es responsabilidad de esta clase desasignar datos. @bin = puntero else # FFI::AutoPointer utiliza una estrategia de liberación personalizada para liberar automáticamente # el puntero una vez que este objeto salga del alcance @bin = FFI::Apuntador automático.Nuevo( Vinculante.mongocrypt_binary_new, Vinculante.Método(destroy_binary_mongocrypt) ) end end |
Detalles del método de clase
.from_data(data) ⇒ Mongo::Crypt::Binary
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Inicializa un objeto binario con una string. El objeto Binario almacenará una copia de la string especificada y destruirá la memoria asignada cuando salga del alcance.
85 86 87 |
# Archivo 'lib/mongo/crypt/binary.rb', línea 85 def sí mismo.from_data(Datos) Nuevo(datos: Datos) end |
.from_pointer(apuntador) ⇒ Mongo::Crypt::Binary
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Inicializa un objeto binario desde un puntero existente a un objeto mongocrypt_binary_t.
74 75 76 |
# Archivo 'lib/mongo/crypt/binary.rb', línea 74 def sí mismo.from_pointer(puntero) Nuevo(puntero: puntero) end |
.wrap_string(str) ⇒ Object
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Envuelve un String con un mongocrypt_binary_t, produciendo un FFI::Pointer a la estructura envuelta.
141 142 143 144 145 146 147 148 149 150 151 |
# Archivo 'lib/mongo/crypt/binary.rb', línea 141 def sí mismo.wrap_string(str) binario_p = Vinculante.mongocrypt_binary_new_from_data( FFI::MemoryPointer.from_string(str), str.bytesize ) begin rendimiento binario_p asegurar Vinculante.mongocrypt_binary_destroy(binario_p) end end |
Detalles del método de instancia
#ref ⇒ FFI::Pointer
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve la referencia al objeto subyacente mongocrypt_binary_t
135 136 137 |
# Archivo 'lib/mongo/crypt/binary.rb', línea 135 def ref @bin end |
#to_s ⇒ String
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve los datos almacenados como una string
125 126 127 128 129 |
# Archivo 'lib/mongo/crypt/binary.rb', línea 125 def to_s str_p = Vinculante.get_binary_data_direct(ref) len = Vinculante.get_binary_len_direct(ref) str_p.read_string(len) end |
#guardar(datos) ⇒ true
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Los datos ingresados no deben ocupar más memoria que la
Sobrescribir los datos existentes cubiertos por este objeto binario
memoria original asignada al objeto subyacente mongocrypt_binary_t. NO utilizes este método a menos que así lo requiera libmongocrypt.
de lo que se asignó originalmente o al escribir en un objeto que ya posee datos.
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# Archivo 'lib/mongo/crypt/binary.rb', línea 102 def guardar(Datos) propagar ArgumentError, 'No se puede guardar en un binario propio' si @data # No se puede escribir una string más larga que el espacio actualmente asignado # por el objeto mongocrypt_binary_t str_p = Vinculante.get_binary_data_direct(ref) len = Vinculante.get_binary_len_direct(ref) si len < Datos.bytesize propagar ArgumentError.Nuevo( "No se puede guardar #{data.bytesize} bytes de datos en un objeto Binario " + "que se inicializó con #{Binding.get_binary_len_direct(@bin)} bytes." ) end str_p.put_bytes(0, Datos) true end |