Classe: Mongo::Grid::FSBucket::Stream::Read

Herda:
Objeto
  • Objeto
mostrar tudo
Inclui:
Enumerável
Definido em:
build/ruby-driver-v2.19/lib/mongo/grid/stream/read.rb

Visão geral

Um fluxo que lê arquivos do FSBucket.

Desde:

  • 2.1.0

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Detalhes do construtor

#initialize(fs, options) ➤ Leia

Crie um fluxo para ler arquivos do FSBucket.

Exemplos:

Crie o stream.

Stream::Read.new(fs, options)

Parâmetros:

  • fs (FSBucket)

    O objeto de bucket GridFS.

  • opções (Hash)

    As opções de fluxo de leitura.

Hash de opções (opções):

  • :file_info_doc (BSON::Document)

    Somente para uso interno do driver. Um documento BSON para usar como informações de arquivo.

Desde:

  • 2.1.0



56
57
58
59
60
61
62
# File 'build/ruby-driver-v2.19/lib/mongo/grid/stream/read.rb', linha 56

def inicializar(fs, opções)
  @fs = fs
  @opções = opções.dup
  @file_id = @opções.excluir(:file_id)
  @opções.congelar
  @open = true
end

Detalhes do atributo da instância

#file_id ➤ BSON::ObjectId, Object (readonly)

Retorna file_id O ID do arquivo que está sendo lido.

Retorna:

  • (BSON::ObjectId, Object)

    file_id O ID do arquivo que está sendo lido.

Desde:

  • 2.1.0



42
43
44
# File 'build/ruby-driver-v2.19/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ê.

Retorna:

  • (FSBucket)

    fs O bucket fs do qual esse stream lê.

Desde:

  • 2.1.0



32
33
34
# File 'build/ruby-driver-v2.19/lib/mongo/grid/stream/read.rb', linha 32

def fs
  @fs
end

#opçõesHash (somente leitura)

Retorna as opções As opções de stream.

Retorna:

  • (Hash)

    opções As opções de stream.

Desde:

  • 2.1.0



37
38
39
# File 'build/ruby-driver-v2.19/lib/mongo/grid/stream/read.rb', linha 37

def opções
  @opções
end

Detalhes do método de instância

#closeBSON::ObjectId, Object

Feche o fluxo de leitura.

Se o fluxo já estiver fechado, esse método não fará nada.

Exemplos:

Feche o stream.

stream.close

Retorna:

  • (BSON::ObjectId, Object)

    O ID do arquivo.

Desde:

  • 2.1.0



125
126
127
128
129
130
131
# File 'build/ruby-driver-v2.19/lib/mongo/grid/stream/read.rb', linha 125

def Fechar
  se @open
    vista.close_query
    @open = false
  end
  file_id
end

#fechado?true, false

O stream está fechado.

Exemplos:

O stream está fechado.

stream.closed?

Retorna:

  • (verdadeiro, falso)

    Se o stream está fechado.

Desde:

  • 2.1.0



141
142
143
# File 'build/ruby-driver-v2.19/lib/mongo/grid/stream/read.rb', linha 141

def fechado?
  !@open
end

#cada {|Cada| ... } ➤ Enumerador

Itere por meio de dados de chunk transmitidos do FSBucket.

Exemplos:

Iterar através dos dados do bloco.

stream.each do |data|
  buffer << data
end

Parâmetros de rendimento:

  • Cada (Hash)

    chunk de dados de arquivo.

Retorna:

  • (Enumerador)

    O enumerador.

Aumenta:

Desde:

  • 2.1.0



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'build/ruby-driver-v2.19/lib/mongo/grid/stream/read.rb', linha 78

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

Observação:

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.

Retorna:

Desde:

  • 2.1.0



179
180
181
182
183
184
185
186
187
188
# File 'build/ruby-driver-v2.19/lib/mongo/grid/stream/read.rb', linha 179

def file_info
  @file_info ||= começar
    doc = opções[:file_info_doc] || fs.file_collection.find(_id: file_id).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

#readstring

Ler todos os dados do arquivo.

Exemplos:

Leia os dados do arquivo.

stream.read

Retorna:

  • (string)

    Os dados do arquivo.

Aumenta:

Desde:

  • 2.1.0



111
112
113
# File 'build/ruby-driver-v2.19/lib/mongo/grid/stream/read.rb', linha 111

def ler
  to_a.juntar
end

#read_preference ➤ BSON::Document

Observação:

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.

Retorna:

  • (BSON::Document)

    A preferência de leitura. O documento pode ter os seguintes campos:

    • : modo – preferência de leitura especificada como um símbolo; Os valores válidos são :primary, :primary_preferred, :secondary, :secondary_preferred e :nearest.

    • :tag_sets – uma array de hashes.

    • :local_threshold.

Desde:

  • 2.1.0



158
159
160
161
162
163
164
165
166
167
# File 'build/ruby-driver-v2.19/lib/mongo/grid/stream/read.rb', linha 158

def read_preference
  @read_preference ||= começar
    pref = opções[:read] || fs.read_preference
    se BSON::Documento === pref
      pref
    mais
      BSON::Documento.Novo(pref)
    end
  end
end