internal RecordsListView(object groupKey, Index dataIndex, Table <T> table, IRecordsComparer <T> comparer, IMemoryValidator validator, DataIndexBase <T> owner, ValueLockRW locker)
 {
     this.dataIndex = dataIndex;
     this.table     = table;
     this.comparer  = comparer;
     this.validator = validator;
     this.owner     = owner;
     this.locker    = locker;
     this.groupKey  = groupKey;
 }
Exemple #2
0
        // Конструктор
        public ArrayStorageList(string fullPath)
        {
            itemSize = sizeof(ArrayStorageItem);

            var inf = new FileInfo(fullPath);

            Key = fullPath.CalculateHashString();

            locker = new ValueLockRW();

            var exist = inf.Exists;

            // Создаем заголовок файла.
            if (!exist)
            {
                fs = new FileStream(fullPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
                fs.SetLength(HeaderSize + 1000 * itemSize);
            }
            else if (inf.Length < HeaderSize)
            {
                throw new Exception("File corrupt.");
            }
            else
            {
                fs = new FileStream(fullPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
            }

            if (inf.IsReadOnly)
            {
                inf.IsReadOnly = false;
            }

            InitFile();

            // Смещения:
            // 0 - Количество всех элементов.
            // 1 - Односвязанный список удаленных элементов. Когда элемент удаляется создается еще один типа ArrayStorageRemovedItem для описания удаленного блока.
            // 2 - Свободные блоки. Они образуется на месте служебных блоков используемых для списка удаленных элементов.
            //Debug.WriteLine("ArrayStorageList count - " + CountMax + ", exist: " + exist);
        }
Exemple #3
0
 public AsVars(string fullPath) : base(fullPath, 8)
 {
     locker = new ValueLockRW();
 }
Exemple #4
0
 public ListSafe()
 {
     list   = new List <T>();
     locker = new ValueLockRW();
 }