Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
        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);
            }
        }