Classe: Mongo::Crypt::Binary Private
- Herda:
-
Objeto
- Objeto
- Mongo::Crypt::Binary
- Definido em:
- build/ruby-driver-v2.19/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
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-v2.19/lib/mongo/crypt/binary.rb', linha 39 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.
87 88 89 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/binary.rb', linha 87 def auto.from_data(de dados) auto.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.
76 77 78 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/binary.rb', linha 76 def auto.from_pointer(pointer) auto.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.
145 146 147 148 149 150 151 152 153 154 155 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/binary.rb', linha 145 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
139 140 141 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/binary.rb', linha 139 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
129 130 131 132 133 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/binary.rb', linha 129 def to_s str_p = Vinculação.mongocrypt_binary_data(ref) len = Vinculação.mongocrypt_binary_ten(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.
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-v2.19/lib/mongo/crypt/binary.rb', linha 104 def escrever(de dados) se @data aumentar ArgumentError, 'Não é possível escrever em um binário de propriedade' end # Não é possível escrever uma string maior que o espaço alocado atualmente # pelo objeto mongocrypt_binary_t str_p = Vinculação.mongocrypt_binary_data(ref) len = Vinculação.mongocrypt_binary_ten(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.mongocrypt_binary_ten(@bin)} bytes." ) end str_p.put_bytes(0, de dados) true end |