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; }
// Конструктор 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); }
public AsVars(string fullPath) : base(fullPath, 8) { locker = new ValueLockRW(); }
public ListSafe() { list = new List <T>(); locker = new ValueLockRW(); }