Classe: Mongo::Crypt::Binary Private
- Herda:
-
Objeto
- Objeto
- Mongo::Crypt::Binary
- Definido em:
- lib/mongo/crypt/binary.rb
Visão geral
Esta classe faz parte de uma API privada. Evite usar essa classe, se possível, pois ela pode ser removida ou alterada no futuro.
Um wrapper em torno do mongocrypt_binary_t, um buffer não proprietário de dados de uint-8 bytes. Cada instância binária mantém uma cópia dos dados passados para ela para manter esses dados vivos.
Recolhimento do Resumo do método de classe
-
.from_data(data) ➤ Mongo::Crypt::Binary
privado
Inicialize um objeto binário com uma string.
-
.from_pointer(pointer) ➤ Mongo::Crypt::Binary
privado
Inicialize um objeto binário de um ponteiro existente para um objeto mongocrypt_binary_t.
-
.wrap_string(str) 3 Objeto
privado
Envolve uma string com um mongocrypt_binary_t, gerando um FFI::Pointer para a estrutura encapsulada.
Recolhimento do Resumo do método de instância
-
#initialize(data: nil, pointer: nil) ➤ Binary
construtor
privado
Crie um novo objeto binário que envolva uma string de bytes.
-
#ref ➤ FFI::Pointer
privado
Retorna a referência ao objeto mongocrypt_binary_t subjacente.
-
#to_s ➤ string
privado
Retorna os dados armazenados como uma string.
-
#write(data) ➤ true
privado
Substitua os dados existentes agrupados por este objeto Binário.
Detalhes do construtor
#initialize(data: nil, pointer: nil) ⇒ Binary
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Ao inicializar um objeto binário com uma string ou um ponteiro,
Criar um novo objeto binário que envolva uma string de bytes
é recomendável usar #auto.from_pointer ou #auto.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 |
# Arquivo 'lib/mongo/crypt/binary.rb', linha 37 def inicializar(dados: nada, ponteiro: nada) se de dados # Representar string de dados como array de uint-8 bytes bytes = de dados.descompactar('C *') # FFI::MemoryPointer libera memória automaticamente quando está fora do escopo @data_p = FFI::MemoryPointer.Novo(bytes.Tamanho) .write_array_of_uint8(bytes) # O FFI::AutoPointer usa uma estratégia de liberação personalizada para liberar automaticamente # o ponteiro quando esse objeto sair do escopo @bin = FFI::AutoPointer.Novo( Vinculação.mongocrypt_binary_new_from_data(@data_p, bytes.Tamanho), Vinculação.Método(:mongocrypt_binary_destroy) ) elsif pointer # Se a classe Binary for usada dessa forma, significa que o ponteiro # para o objeto mongocrypt_binary_t subjacente está alocado em algum lugar # mais. Não é responsabilidade desta classe desalocar dados. @bin = pointer mais # O FFI::AutoPointer usa uma estratégia de liberação personalizada para liberar automaticamente # o ponteiro quando esse objeto sair do escopo @bin = FFI::AutoPointer.Novo( Vinculação.mongocrypt_binary_new, Vinculação.Método(:mongocrypt_binary_destroy) ) end end |
Detalhes do método de classe
.from_data(data) ➤ Mongo::Crypt::Binary
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Inicialize um objeto binário com uma string. O objeto Binary armazenará uma cópia da string especificada e destruirá a memória alocada quando ela sair do escopo.
85 86 87 |
# Arquivo 'lib/mongo/crypt/binary.rb', linha 85 def auto.from_data(de dados) Novo(dados: de dados) end |
.from_pointer(pointer) ➤ Mongo::Crypt::Binary
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Inicialize um objeto binário de um ponteiro existente para um objeto mongocrypt_binary_t.
74 75 76 |
# Arquivo 'lib/mongo/crypt/binary.rb', linha 74 def auto.from_pointer(pointer) Novo(ponteiro: pointer) end |
.wrap_string(str) 3 Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Envolve uma string com um mongocrypt_binary_t, gerando um FFI::Pointer para a estrutura encapsulada.
141 142 143 144 145 146 147 148 149 150 151 |
# Arquivo 'lib/mongo/crypt/binary.rb', linha 141 def auto.wrap_string(str) binary_p = Vinculação.mongocrypt_binary_new_from_data( FFI::MemoryPointer.from_string(str), str.bytesize ) começar rendimento binary_p garantir Vinculação.mongocrypt_binary_destroy(binary_p) end end |
Detalhes do método de instância
#ref ➤ FFI::Pointer
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna a referência ao objeto mongocrypt_binary_t subjacente
135 136 137 |
# Arquivo 'lib/mongo/crypt/binary.rb', linha 135 def ref @bin end |
#to_s ➤ string
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna os dados armazenados como uma string
125 126 127 128 129 |
# Arquivo 'lib/mongo/crypt/binary.rb', linha 125 def to_s str_p = Vinculação.get_binary_data_direct(ref) len = Vinculação.get_binary_ten_direct(ref) str_p.read_string(len) end |
#write(data) ➤ true
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Os dados passados não devem ocupar mais memória do que os
Substituir os dados existentes envolvidos por este objeto binário
memória original alocada para o objeto mongocrypt_binary_t subjacente. NÃO use este método, a menos que seja exigido pela libmongocrypt.
do que foi originalmente alocado ou ao gravar em um objeto que já possui dados.
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# Arquivo 'lib/mongo/crypt/binary.rb', linha 102 def escrever(de dados) aumentar ArgumentError, 'Não é possível escrever em um binário de propriedade' se @data # Não é possível escrever uma string maior que o espaço alocado atualmente # pelo objeto mongocrypt_binary_t str_p = Vinculação.get_binary_data_direct(ref) len = Vinculação.get_binary_ten_direct(ref) se len < de dados.bytesize aumentar ArgumentError.Novo( "Não é possível escrever #{data.bytesize} bytes de dados em um objeto binário " + "que foi inicializado com #{Binding.get_binary_ten_direct(@bin)} bytes." ) end str_p.put_bytes(0, de dados) true end |