public CompositeRawFile(string fileName, int bitHint, ICompositeFileFactory mmf, EFileAccess access, int partitionID, int fileID, int columnID, EDataType dataType, int minBitHint) { if (bitHint < minBitHint || bitHint > MetadataConstants.MAX_FILE_BIT_HINT) { throw new NFSdbConfigurationException("Calclated size of file {0} " + "is invalid. Should be >= 2^{1} and <= 2^{2} " + "but was 2^{3}", fileName, MetadataConstants.MIN_FILE_BIT_HINT, MetadataConstants.MAX_FILE_BIT_HINT, bitHint); } _bitHint = bitHint; Access = access; _compositeFile = mmf.OpenFile(fileName, bitHint, access); PartitionID = partitionID; FileID = fileID; ColumnID = columnID; DataType = dataType; Filename = fileName; _pointersArray = LongAllocate(INITIAL_PARTS_COLLECTION_SIZE); _pointersArrayLen = INITIAL_PARTS_COLLECTION_SIZE; _pointersArrayFixedLen = INITIAL_PARTS_COLLECTION_SIZE; }
private void Dispose(bool isDispose) { lock (_buffSync) { if (_buffers == null) { return; } var buffCopy = _buffers; _buffers = null; foreach (var rawFilePart in buffCopy) { if (rawFilePart != null) { rawFilePart.Dispose(); } } _buffers = null; } Marshal.FreeHGlobal((IntPtr)_pointersArray); _compositeFile = null; if (isDispose) { GC.SuppressFinalize(this); } }