Class: Mongo::Grid::File::Chunk
- Inherits:
-
Object
- Object
- Mongo::Grid::File::Chunk
- Defined in:
- lib/mongo/grid/file/chunk.rb
Overview
Encapsulates behaviour around GridFS chunks of file data.
Constant Summary collapse
- COLLECTION =
Name of the chunks collection.
'chunks'.freeze
- DEFAULT_SIZE =
Default size for chunks of data.
(255 * 1024).freeze
Instance Attribute Summary collapse
-
#document ⇒ BSON::Document
readonly
Document The document to store for the chunk.
Class Method Summary collapse
-
.assemble(chunks) ⇒ String
Takes an array of chunks and assembles them back into the full piece of raw data.
-
.split(data, file_info, offset = 0) ⇒ Array<Chunk>
Split the provided data into multiple chunks.
Instance Method Summary collapse
-
#==(other) ⇒ true, false
Check chunk equality.
-
#bson_type ⇒ Integer
Get the BSON type for a chunk document.
-
#data ⇒ BSON::Binary
Get the chunk data.
-
#files_id ⇒ BSON::ObjectId
Get the files id.
-
#id ⇒ BSON::ObjectId
Get the chunk id.
-
#initialize(document) ⇒ Chunk
constructor
Create the new chunk.
-
#n ⇒ Integer
Get the chunk position.
-
#to_bson(buffer = BSON::ByteBuffer.new) ⇒ String
Conver the chunk to BSON for storage.
Constructor Details
#initialize(document) ⇒ Chunk
Create the new chunk.
122 123 124 |
# File 'lib/mongo/grid/file/chunk.rb', line 122 def initialize(document) @document = BSON::Document.new(:_id => BSON::ObjectId.new).merge(document) end |
Instance Attribute Details
#document ⇒ BSON::Document (readonly)
Returns document The document to store for the chunk.
36 37 38 |
# File 'lib/mongo/grid/file/chunk.rb', line 36 def document @document end |
Class Method Details
.assemble(chunks) ⇒ String
Takes an array of chunks and assembles them back into the full piece of raw data.
153 154 155 |
# File 'lib/mongo/grid/file/chunk.rb', line 153 def assemble(chunks) chunks.reduce(''){ |data, chunk| data << chunk.data.data } end |
.split(data, file_info, offset = 0) ⇒ Array<Chunk>
Split the provided data into multiple chunks.
168 169 170 171 172 173 174 175 176 177 178 179 |
# File 'lib/mongo/grid/file/chunk.rb', line 168 def split(data, file_info, offset = 0) chunks, index, n = [], 0, offset while index < data.length bytes = data.slice(index, file_info.chunk_size) file_info.md5.update(bytes) chunk = Chunk.new(:data => BSON::Binary.new(bytes), :files_id => file_info.id, :n => n) chunks.push(chunk) index += bytes.length n += 1 end chunks end |
Instance Method Details
#==(other) ⇒ true, false
Check chunk equality.
48 49 50 51 |
# File 'lib/mongo/grid/file/chunk.rb', line 48 def ==(other) return false unless other.is_a?(Chunk) document == other.document end |
#bson_type ⇒ Integer
Get the BSON type for a chunk document.
61 62 63 |
# File 'lib/mongo/grid/file/chunk.rb', line 61 def bson_type BSON::Hash::BSON_TYPE end |
#data ⇒ BSON::Binary
Get the chunk data.
73 74 75 |
# File 'lib/mongo/grid/file/chunk.rb', line 73 def data document[:data] end |
#files_id ⇒ BSON::ObjectId
Get the files id.
97 98 99 |
# File 'lib/mongo/grid/file/chunk.rb', line 97 def files_id document[:files_id] end |
#id ⇒ BSON::ObjectId
Get the chunk id.
85 86 87 |
# File 'lib/mongo/grid/file/chunk.rb', line 85 def id document[:_id] end |
#n ⇒ Integer
Get the chunk position.
109 110 111 |
# File 'lib/mongo/grid/file/chunk.rb', line 109 def n document[:n] end |
#to_bson(buffer = BSON::ByteBuffer.new) ⇒ String
Conver the chunk to BSON for storage.
136 137 138 |
# File 'lib/mongo/grid/file/chunk.rb', line 136 def to_bson(buffer = BSON::ByteBuffer.new) document.to_bson(buffer) end |