Clase: Mongo::Crypt::Binary Private

Hereda:
Objeto
  • Objeto
Mostrar todo
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

Colapso del resumen del método de instancia

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.

Nota:

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

Parámetros:

  • datos (Cadena) (predeterminado: nulo)

    La cadena de datos envuelta por el búfer de bytes (opcional)

  • puntero (FFI::Puntero) (predeterminado: nulo)

    Un puntero a un objeto mongocrypt_binary_t existente



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.

Parámetros:

  • datos (Cadena) -

    Una cadena que será envuelta por el objeto binario

Devuelve:



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.

Parámetros:

  • puntero (FFI::Puntero)

    Un puntero a un objeto mongocrypt_binary_t existente

Devuelve:



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

#refFFI::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

Devuelve:

  • (FFI::Puntero)

    El objeto subyacente mongocrypt_binary_t



139
140
141
# Archivo 'lib/mongo/crypt/binary.rb', línea 139

def ref
  @bin
end

#to_sCadena

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

Devuelve:

  • (Cadena) -

    Datos almacenados en mongocrypt_binary_t 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.

Nota:

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.

Parámetros:

  • datos (Cadena) -

    El nuevo string que se va a envolver en este objeto binario

Devuelve:

  • (verdadero) -

    Siempre cierto

Aumentos:

  • (ArgumentError)

    Se genera cuando se intenta escribir más 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