internal GridStream(
Collection collection,
string name,
Doc fileInfo,
FileAccess access)
{
Contract.Requires(fileInfo != null);
_collection = collection;
_chunks = _collection.ChunkCollection();
_fileInfo = new FileInfo(fileInfo, _collection);
long rem;
_totalChunks = (int)Math.DivRem(_fileInfo.Length, _fileInfo.ChunkSize, out rem);
_totalChunks = rem > 0 ? _totalChunks + 1 : _totalChunks;
_chunks.CreateIndex(new Index { { "files_id", Mongo.Dir.Asc }, { "n", Mongo.Dir.Asc } }, true);
LoadChunk(0);
_position = 0L;
switch (access)
{
case FileAccess.Read:
_canRead = true;
break;
case FileAccess.ReadWrite:
_canRead = true;
_canWrite = true;
break;
case FileAccess.Write:
_canWrite = true;
break;
}
_canSeek = true;
}