Classe: Mongo::Grid::FSBucket::Stream::Read
- Herda:
-
Objeto
- Objeto
- Mongo::Grid::FSBucket::Stream::Read
- Inclui:
- Enumerável
- Definido em:
- lib/mongo/grid/stream/read.rb
Visão geral
Um fluxo que lê arquivos do FSBucket.
Recolhimento do Resumo do atributo de instância
-
#file_id ➤ BSON::ObjectId, Object
Somente leitura
File_id A ID do arquivo que está sendo lido.
-
#fs ⇒ FSBucket
Somente leitura
Fs O bucket fs do qual esse stream lê.
-
#opções ➤ Hash
Somente leitura
Opções As opções de stream.
Recolhimento do Resumo do método de instância
-
#close ➤ BSON::ObjectId, Object
Feche o fluxo de leitura.
-
#fechado? ➤ verdadeiro, falso
O stream está fechado.
-
#cada {|Cada| ... } ➤ Enumerador
Itere por meio de dados de chunk transmitidos do FSBucket.
-
#file_info ➤ Arquivo::Info
Obtenha o documento de informações do arquivo de collection de arquivos para o arquivo que está sendo lido.
-
#initialize(fs, options) ➤ Leia
construtor
Crie um fluxo para ler arquivos do FSBucket.
-
#read ➤ string
Ler todos os dados do arquivo.
-
#read_preference ➤ BSON::Document
Obtenha a read preference.
Detalhes do construtor
#initialize(fs, options) ➤ Leia
Crie um fluxo para ler arquivos do FSBucket.
56 57 58 59 60 61 62 63 64 65 66 67 68 |
# Arquivo 'lib/mongo/grid/stream/read.rb', linha 56 def inicializar(fs, ) @fs = fs @opções = .dup @file_id = @opções.excluir(:file_id) @opções.congelar @open = true @timeout_holder = CsotTimeoutHolder.Novo( operation_timeouts: { operation_timeout_ms: [:timeout_ms], inherited_timeout_ms: fs.database.timeout_ms } ) end |
Detalhes do atributo da instância
#file_id ➤ BSON::ObjectId, Object (readonly)
Retorna file_id O ID do arquivo que está sendo lido.
42 43 44 |
# Arquivo 'lib/mongo/grid/stream/read.rb', linha 42 def file_id @file_id end |
#fs ➤ FSBucket (somente leitura)
Retorna fs O bucket fs do qual esse stream lê.
32 33 34 |
# Arquivo 'lib/mongo/grid/stream/read.rb', linha 32 def fs @fs end |
#opções ➤ Hash (somente leitura)
Retorna as opções As opções de stream.
37 38 39 |
# Arquivo 'lib/mongo/grid/stream/read.rb', linha 37 def @opções end |
Detalhes do método de instância
#close ➤ BSON::ObjectId, Object
Feche o fluxo de leitura.
Se o fluxo já estiver fechado, esse método não fará nada.
131 132 133 134 135 136 137 |
# Arquivo 'lib/mongo/grid/stream/read.rb', linha 131 def Fechar se @open vista.close_query @open = false end file_id end |
#fechado? ➤ true, false
O stream está fechado.
147 148 149 |
# Arquivo 'lib/mongo/grid/stream/read.rb', linha 147 def fechado? !@open end |
#cada {|Cada| ... } ➤ Enumerador
Itere por meio de dados de chunk transmitidos do FSBucket.
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# Arquivo 'lib/mongo/grid/stream/read.rb', linha 84 def cada ensure_readable! informações = file_info num_chunks = (informações.Tamanho + informações.chunk_size - 1) / informações.chunk_size num_read = 0 se block_given? vista.cada_com_index.reduzir(0) fazer |comprimento_read, (doc, index)| chunk = Grade::arquivo::parte.Novo(doc) validar!(index, num_chunks, chunk, comprimento_read) de dados = chunk.de dados.de dados rendimento de dados num_read += 1 comprimento_read += de dados.Tamanho end.toque fazer se num_read < num_chunks aumentar Erro::missingFileChunk.Novo(num_chunks, num_read) end end mais vista.to_enum end end |
#file_info ➤ Arquivo::Info
As informações do arquivo são armazenadas em cache no fluxo. As chamadas subsequentes para file_info retornarão as mesmas informações que a primeira chamada retornou e não farão query do banco de dados de dados novamente.
Obtenha o documento de informações do arquivo de collection de arquivos para o arquivo que está sendo lido.
185 186 187 188 189 190 191 192 193 194 195 196 197 198 |
# Arquivo 'lib/mongo/grid/stream/read.rb', linha 185 def file_info @file_info ||= começar doc = [:file_info_doc] || fs.file_collection.find( { _id: file_id }, { timeout_ms: @timeout_holder.remaining_timeout_ms! } ).primeiro se doc arquivo::informações.Novo(Opções::Mapeador.transformação, transformação(doc, arquivo::informações::mapeamentos.inverter)) mais nada end end end |
#read ➤ string
Ler todos os dados do arquivo.
117 118 119 |
# Arquivo 'lib/mongo/grid/stream/read.rb', linha 117 def ler to_a.juntar end |
#read_preference ➤ BSON::Document
Esse método sempre retorna uma instância BSON::Document, mesmo que o construtor especifique o tipo de :read como um Hash, não como um BSON::Document.
Obtenha a read preference.
164 165 166 167 168 169 170 171 172 173 |
# Arquivo 'lib/mongo/grid/stream/read.rb', linha 164 def read_preference @read_preference ||= começar pref = [:read] || fs.read_preference se BSON::Documento === pref pref mais BSON::Documento.Novo(pref) end end end |