Clase: Mongo::Crypt::Binary Private
- Hereda:
-
Objeto
- Objeto
- Mongo::Crypt::Binario
- Definido en:
- lib/mongo/crypt/binary.rb
Overview
Esta clase forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.
Un contenedor de mongocrypt_binary_t, un búfer no propietario de datos de bytes uint-8. Cada instancia de Binary conserva una copia de los datos que se le pasan para mantenerlos activos.
Colapso delresumen del método de clase
-
.from_data(datos) ⇒ Mongo::Crypt::Binary
privada
Inicializar un objeto binario con una cadena.
-
.from_pointer(puntero) ⇒ Mongo::Crypt::Binary
privada
Inicializar un objeto binario desde un puntero existente a un objeto mongocrypt_binary_t.
-
.wrap_string(str) ⇒ Objeto
privada
Envuelve una cadena con un mongocrypt_binary_t, lo que produce un FFI::Pointer a la estructura envuelta.
Colapso del resumen del método de instancia
-
#initialize(data: nil, pointer: nil) ⇒ Binary
constructor
privada
Crea un nuevo objeto binario que envuelve una cadena de bytes.
-
#ref ⇒ FFI::Puntero
privada
Devuelve la referencia al objeto mongocrypt_binary_t subyacente.
-
#to_s ⇒ Cadena
privada
Devuelve los datos almacenados como una cadena.
-
#escribir(datos) ⇒ verdadero
privada
Sobrescriba los datos existentes envueltos por este objeto binario.
Detalles del constructor
#initialize(data: nil, pointer: nil) ⇒ Binary
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Al inicializar un objeto binario con una cadena o un puntero,
Crea un nuevo objeto binario que envuelve una cadena de bytes
Se recomienda que utilice los métodos #self.from_pointer o #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 |
# Archivo 'lib/mongo/crypt/binary.rb', línea 39 def inicializar(datos: nulo, puntero: nulo) Si datos # Representa la cadena de datos como una matriz de uint-8 bytes bytes = datos.deshacer('C* ') # FFI::MemoryPointer libera automáticamente la memoria cuando queda fuera del alcance @data_p = FFI::MemoryPointer.Nuevo(bytes.longitud) .escritura_matriz_de_uint8(bytes) # FFI::AutoPointer utiliza una estrategia de liberación personalizada para liberar automáticamente # el puntero una vez que este objeto sale del ámbito @bin = FFI::Puntero automático.Nuevo( Vinculante.mongocrypt_binario_nuevo_desde_datos(@data_p, bytes.longitud), Vinculante.Método(:mongocrypt_binary_destroy) ) elsif puntero # Si la clase Binary se usa de esta manera, significa que el puntero # para el objeto mongocrypt_binary_t subyacente se asigna en algún lugar # de lo contrario, 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 sale del ámbito @bin = FFI::Puntero automático.Nuevo( Vinculante.mongocrypt_binario_nuevo, Vinculante.Método(:mongocrypt_binary_destroy) ) end end |
Detalles del método de clase
.from_data(datos) ⇒ Mongo::Crypt::Binary
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Inicializa un objeto binario con una cadena. El objeto binario almacenará una copia de la cadena especificada y destruirá la memoria asignada cuando salga del ámbito.
87 88 89 |
# Archivo 'lib/mongo/crypt/binary.rb', línea 87 def yo.desde_datos(datos) yo.Nuevo(datos: datos) end |
.from_pointer(puntero) ⇒ Mongo::Crypt::Binary
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Inicializar un objeto binario desde un puntero existente a un objeto mongocrypt_binary_t.
76 77 78 |
# Archivo 'lib/mongo/crypt/binary.rb', línea 76 def yo.desde_puntero(puntero) yo.Nuevo(puntero: puntero) end |
.wrap_string(str) ⇒ Objeto
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Envuelve una cadena con un mongocrypt_binary_t, lo que produce un FFI::Pointer a la estructura envuelta.
145 146 147 148 149 150 151 152 153 154 155 |
# Archivo 'lib/mongo/crypt/binary.rb', línea 145 def yo.cadena de envoltura(str) binario_p = Vinculante.mongocrypt_binario_nuevo_desde_datos( FFI::MemoryPointer.from_string(str), str.bytesize, ) begin rendimiento binario_p asegurar Vinculante.destrucción binaria de mongocrypt(binario_p) end end |
Detalles del método de instancia
#ref ⇒ FFI::Puntero
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve la referencia al objeto mongocrypt_binary_t subyacente
139 140 141 |
# Archivo 'lib/mongo/crypt/binary.rb', línea 139 def ref @bin end |
#to_s ⇒ Cadena
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve los datos almacenados como una cadena
129 130 131 132 133 |
# Archivo 'lib/mongo/crypt/binary.rb', línea 129 def a_s str_p = Vinculante.obtener_datos_binarios_directamente(ref) len = Vinculante.obtener_len_binario_directo(ref) str_p.leer_cadena(len) end |
#guardar(datos) ⇒ true
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Los datos que se pasan no deben ocupar más memoria que la
Sobrescribir los datos existentes envueltos por este objeto binario
Memoria original asignada al objeto mongocrypt_binary_t subyacente. NO utilice este método a menos que libmongocrypt lo requiera.
de lo que se asignó originalmente o al escribir en un objeto que ya posee datos.
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# Archivo 'lib/mongo/crypt/binary.rb', línea 104 def guardar(datos) Si @data propagar ArgumentError, 'Nose puede escribir en un binario propio' end # No se puede escribir una cadena que sea más larga que el espacio asignado actualmente # por el objeto mongocrypt_binary_t str_p = Vinculante.obtener_datos_binarios_directamente(ref) len = Vinculante.obtener_len_binario_directo(ref) Si len < datos.bytesize propagar ArgumentError.Nuevo( "Nose pueden escribir #{data.bytesize} bytes de datos en un objeto binario" + "que se inicializó con #{Binding.get_binary_len_direct(@bin)} bytes." ) end str_p.poner_bytes(0, datos) true end |