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

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

Overview

Una secuencia que lee archivos del FSBucket.

Desde:

  • 2.1.0

Colapso delresumen de atributos de instancia

Colapso del resumen del método de instancia

Detalles del constructor

#inicializar(fs, opciones) ⇒ Leer

Crea una secuencia para leer archivos desde FSBucket.

Ejemplos:

Crea el flujo.

Stream::Read.new(fs, options)

Parámetros:

  • fs (FSBucket)

    El objeto bucket GridFS.

  • opciones (Hash)

    Las opciones de transmisión de lectura.

Opciones Hash(opciones):

  • :archivo_info_doc (BSON::Documento)

    Solo para uso interno del controlador. Documento BSON para usar como información de archivo.

Desde:

  • 2.1.0



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

def inicializar(fs, opciones)
  @fs = fs
  @opciones = opciones.dup
  @file_id = @opciones.borrar(:file_id)
  @opciones.freeze
  @open = true
  @timeout_holder = Titular del tiempo de espera de Csot.Nuevo(
    tiempos de espera de operación: {
      tiempo de espera de operación_ms: opciones[:tiempo de espera_ms],
      tiempo de espera heredado_ms: fs.database.tiempo de espera_ms
    }
  )
end

Detalles de los atributos de instancia

#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



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

def file_id
  @file_id
end

#fsFSBucket (solo lectura)

Devuelve fs El depósito fs desde el que lee esta secuencia.

Devuelve:

  • (FSBucket)

    fs El depósito fs desde el que se lee esta secuencia.

Desde:

  • 2.1.0



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

def fs
  @fs
end

#opcionesHash (solo lectura)

Opciones de retorno Las opciones de transmisión.

Devuelve:

  • (Hash)

    opciones Las opciones de transmisión.

Desde:

  • 2.1.0



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

def opciones
  @opciones
end

Detalles del método de instancia

#cerrarBSON::ObjectId, Objeto

Cerrar el flujo de lectura.

Si la transmisión ya está cerrada, 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



131
132
133
134
135
136
137
# Archivo 'lib/mongo/grid/stream/read.rb', línea 131

def cerrar
  Si @open
    vista.cerrar_consulta
    @open = false
  end
  file_id
end

#cerrado?verdadero, falso

¿El arroyo está cerrado?

Ejemplos:

¿El arroyo está cerrado?

stream.closed?

Devuelve:

  • (verdadero,falso)

    Si el flujo está cerrado.

Desde:

  • 2.1.0



147
148
149
# Archivo 'lib/mongo/grid/stream/read.rb', línea 147

def ¿cerrado?
  !@open
end

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

Iterar a través de fragmentos de datos transmitidos desde FSBucket.

Ejemplos:

Iterar a través de los datos del fragmento.

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

Parámetros de rendimiento:

  • Cada (Hash)

    fragmento de datos de archivo.

Devuelve:

  • (Enumerator)

    El enumerador.

Aumentos:

Desde:

  • 2.1.0



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

def cada
  ¡Asegúrese de que sea legible!
  información = file_info
  núm_fragmentos = (información.longitud + información.tamaño del fragmento - 1) / información.tamaño del fragmento
  num_read = 0
  Si ¿bloque_dado?
    vista.cada_con_índice.reducir(0) hacer |longitud_lectura, (doc, index)|
      fragmento = Cuadrícula::Archivo::Fragmento.Nuevo(doc)
      validate!(index, núm_fragmentos, fragmento, longitud_lectura)
      datos = fragmento.datos.datos
      rendimiento datos
      num_read += 1
      longitud_lectura += datos.tamaño
    end.grifo hacer
      Si num_read < núm_fragmentos
        propagar Error::Fragmento de archivo faltante.Nuevo(núm_fragmentos, num_read)
      end
    end
  else
    vista.to_enum
  end
end

#file_infoFile::Info

Nota:

La información del archivo se almacena en caché en la secuencia. Las llamadas posteriores a file_info devolverán la misma información que la primera y no volverán a consultar la base de datos.

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

Devuelve:

  • (File::Info)

    El objeto de información del archivo.

Desde:

  • 2.1.0



185
186
187
188
189
190
191
192
193
194
195
196
197
198
# Archivo 'lib/mongo/grid/stream/read.rb', línea 185

def file_info
  @info_del_archivo ||= begin
    doc = opciones[:archivo_info_doc] ||
      fs.colección de archivos.buscar(
        { _id: file_id },
        { tiempo de espera_ms: @timeout_holder.¡tiempo de espera restante_ms! }
      ).primera
    Si doc
      Archivo::Info.Nuevo(opciones::Mapeador.transformar(doc, Archivo::Info::MAPEO.invert))
    else
      nulo
    end
  end
end

#leerCadena

Leer todos los datos del archivo.

Ejemplos:

Leer los datos del archivo.

stream.read

Devuelve:

  • (Cadena) -

    Los datos del archivo.

Aumentos:

Desde:

  • 2.1.0



117
118
119
# Archivo 'lib/mongo/grid/stream/read.rb', línea 117

def Lea
  to_a.Join
end

#read_preferenceBSON::Document

Nota:

Este método siempre devuelve una instancia BSON::Document, aunque el constructor especifique el tipo de :read como un Hash, no como un BSON::Document.

Obtenga la preferencia de lectura.

Devuelve:

  • (BSON::Documento)

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

    • :mode – preferencia de lectura especificada como un símbolo; los valores válidos son:primary,:primary_preferred,:secondary,:secondary_preferred y:nearest.

    • :tag_sets – una matriz de hashes.

    • :local_threshold.

Desde:

  • 2.1.0



164
165
166
167
168
169
170
171
172
173
# Archivo 'lib/mongo/grid/stream/read.rb', línea 164

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