Clase: Mongo::Grid::FSBucket::Stream::Read

Hereda:
Objeto
  • Objeto
Mostrar todo
Incluye:
Enumerable
Definido en:
lib/mongo/grid/stream/read.rb

Overview

Un flujo que lee archivos del FSBucket.

Desde:

  • 2.1.0

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

Detalles del Constructor

#initialize(fs, options) ⇒ Leer

Crea un flujo para leer archivos desde el FSBucket.

Ejemplos:

Crea el flujo.

Stream::Read.new(fs, options)

Parámetros:

  • fs (FSBucket)

    El objeto bucket de GridFS.

  • opciones (encriptada)

    Las opciones de flujo de lectura.

Opciones Hash (options):

  • Información del archivo (BSON::Document)

    Solo para uso interno del driver. Un documento BSON para utilizar como información de archivo.

Desde:

  • 2.1.0



54
55
56
57
58
59
60
61
62
63
64
65
66
# Archivo 'lib/mongo/grid/stream/read.rb', línea 54

def inicializar(fs, opciones)
  @fs = fs
  @options = opciones.dup
  @file_id = @options.borrar(:file_id)
  @options.freeze
  @open = true
  @timeout_holder = CsotTimeoutHolder.Nuevo(
    operation_timeouts: {
      operation_timeout_ms: opciones[:timeout_ms],
      timeout_ms_heredado: fs.database.timeout_ms
    }
  )
end

Detalles de atributo de instancias

#file_idBSON::ObjectId, objeto (solo lectura)

Devuelve file_id El id del archivo que se está leyendo.

Devuelve:

  • (BSON::ObjectId, objeto)

    file_id El id del archivo que se está leyendo.

Desde:

  • 2.1.0



40
41
42
# Archivo 'lib/mongo/grid/stream/read.rb', línea 40

def file_id
  @file_id
end

#fsFSBucket (solo lectura)

Devuelve fs el bucket de fs del que lee este flujo.

Devuelve:

  • (FSBucket)

    fs El bucket fs desde el que se lee este flujo.

Desde:

  • 2.1.0



30
31
32
# Archivo 'lib/mongo/grid/stream/read.rb', línea 30

def fs
  @fs
end

#opcionesHash (solo lectura)

Devuelve opciones Las opciones del flujo.

Devuelve:

  • (encriptada)

    options Las opciones del flujo.

Desde:

  • 2.1.0



35
36
37
# Archivo 'lib/mongo/grid/stream/read.rb', línea 35

def opciones
  @options
end

Detalles del método de instancia

#cerrarBSON::ObjectId, objeto

Cierra el flujo de lectura.

Si el flujo ya está cerrado, este método no hace nada.

Ejemplos:

Cierra la transmisión.

stream.close

Devuelve:

  • (BSON::ObjectId, objeto)

    El ID del archivo.

Desde:

  • 2.1.0



127
128
129
130
131
132
133
# Archivo 'lib/mongo/grid/stream/read.rb', línea 127

def Cerrar
  si @open
    vista.close_query
    @open = false
  end
  file_id
end

#cerrado?verdadero, falso

¿Está cerrado el flujo?

Ejemplos:

¿Está cerrado el flujo?

stream.closed?

Devuelve:

  • (true, false)

    Si la secuencia está cerrada.

Desde:

  • 2.1.0



143
144
145
# Archivo 'lib/mongo/grid/stream/read.rb', línea 143

def ¿Cerrado?
  !@open
end

#each {|Each| ... } ⇒ Enumerator

Itérate a través de datos de fragmentos transmitidos desde el FSBucket.

Ejemplos:

Iterar a través de los datos del fragmento.

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

Parámetros de rendimiento:

  • Cada uno (encriptada)

    fragmento de datos de archivos.

Devuelve:

  • (Enumerator)

    El enumerador.

Aumenta:

Desde:

  • 2.1.0



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# Archivo 'lib/mongo/grid/stream/read.rb', línea 82

def cada
  asegurar_legibilidad!
  información = file_info
  num_chunks = (información.longitud + información.chunk_size - 1) / información.chunk_size
  num_read = 0
  si ¿block_given?
    vista.each_with_index.disminuir(0) hacer |length_read, (doc, index)|
      fragmento = Cuadrícula::Archivo::fragmento.Nuevo(doc)
      validate!(index, num_chunks, fragmento, length_read)
      Datos = fragmento.Datos.Datos
      rendimiento Datos
      num_read += 1
      length_read + Datos.Tamaño
    end.tocar hacer
      propagar Error::FaltaFragmentoDeArchivo.Nuevo(num_chunks, num_read) si num_read < num_chunks
    end
  else
    vista.to_enum
  end
end

#file_infoFile::Info

Nota:

La información del archivo se almacena en caché en el flujo. Las llamadas posteriores a file_info devolverán la misma información que devolvió la primera llamada, y no consultarán de nuevo la base de datos.

Obtenga el documento de información del archivo de la colección de archivos del archivo que se está leyendo.

Devuelve:

  • (File::Info)

    El objeto de información de archivos.

Desde:

  • 2.1.0



181
182
183
184
185
186
187
188
189
190
# Archivo 'lib/mongo/grid/stream/read.rb', línea 181

def file_info
  @file_info ||= begin
    doc = opciones[Información del archivo] ||
          fs.colección_archivos.buscar(
            { _id: file_id },
            { tiempo_de_espera_ms: @timeout_holder.remaining_timeout_ms! }
          ).primero
    Archivo::información.Nuevo(opciones::Mapeador.Transforma(doc, Archivo::información::Mapeos.invert)) si doc
  end
end

#readString

Leer todos los datos del archivo.

Ejemplos:

Lea los datos del archivo.

stream.read

Devuelve:

  • (string)

    Los datos del archivo.

Aumenta:

Desde:

  • 2.1.0



113
114
115
# Archivo 'lib/mongo/grid/stream/read.rb', línea 113

def Lea
  to_a.unirse
end

#read_preferenceBSON::Document

Nota:

Este método siempre devuelve una instancia de BSON::Document, incluso cuando el constructor especifica que el tipo de :read es un Hash, no un BSON::Document.

Obtén la preferencia de lectura.

Devuelve:

  • (BSON::Document)

    La preferencia de lectura. El documento puede tener los siguientes campos:

    • :modo -- preferencia de lectura especificada como un símbolo; los valores válidos son :principal, :preferencia_principal, :secundario, :preferencia_secundaria y :más cercanos.
    • :tag_sets -- un arreglo de hashes.
    • :local_threshold.

Desde:

  • 2.1.0



160
161
162
163
164
165
166
167
168
169
# Archivo 'lib/mongo/grid/stream/read.rb', línea 160

def read_preference
  @read_preference ||= begin
    pref = opciones[:leer] || fs.read_preference
    si pref.is_a?(BSON::Documento)
      pref
    else
      BSON::Documento.Nuevo(pref)
    end
  end
end