Example #1
0
        // создать ссылку , прокси объекта для группы с индеском ничего не знает о адресе в основном файле. Чтобы прочитать объект, надо в индесном файле узнать реальный адрес
        // надо создать ДисковоеХранилище где АдресОбъекта это не АдресВФайле, а АдресВИндексе. Адресв Файле должен быть скрыт
        // прокси с Адресом в файле может быть не верным, кто-то может его изменить, или удалить.
        // группы в индесным файлом должны иметь ссылки не на адрес в основном файле а номер в индексе
        // примитивы с неизменной длинной нет смысла переносить. А группы могут переноситься в конец файла или свободное пространство.
        // ГркппаОбъектов при сохранении в индесном файле. сначала зарезирвировать в индексном файле номер для себя и набор индексных адресов для объектов
        //сохранить этот набор как ссылки на объекты, потом начинать сохраять объекты и сопоставлять номер индекса номеру байта в основном файле
        // это аболютно не похоже что делается сейчас (запись в ленту), первого этапа сохранения адресов индесксов нет вообще. дальше похоже только до или после сохранения объекта
        // надо запомнить номер позиции в индесном файле.
        // Хотя если ГруппаОбъектов используется только целиком, читается целиком, удаляется целиком, то вышеопианная процедура не нужна.Все работает нормально
        // Если группа это группа адресов (=узел), объекты это самостоятельные объекты с собственным адресом. Самостоятельные (независимые от группы), т.е. они могут меняться
        // незатрагивая группу

        public ПроксиОбъекта ДайПроксиОбъекта(int индекс)
        {
            var прокси = new ПроксиОбъекта()
            {
                АдресПримитива = АдресВФайлеПоИндексу(индекс)
            };

            return(прокси);
        }
Example #2
0
        public ПроксиОбъекта ДайЭлемент(int индекс, Адрес адресВладельца)    // дается копия элемента
        {
            var элемент = new ПроксиОбъекта();

            элемент.АдресПримитива = (Адрес)Список[индекс].СобственныйАдресПримитива.Копировать();
            //элемент.Примитив = Список[индекс].Копировать();

            СписокВладельцевЭлементов[индекс].Add(адресВладельца);
            //Подписать на изменеия значения, адреса, значения примитива

            return(элемент);
        }
Example #3
0
        public ПроксиОбъекта ДайЭлемент(Адрес адрес, Адрес адресВладельца) // дается копия элемента
        {
            var индекс  = ((АдресВГруппе)адрес).НомерВГруппе;
            var элемент = new ПроксиОбъекта();

            элемент.АдресПримитива = (Адрес)Список[индекс].СобственныйАдресПримитива.Копировать();
            //элемент.Примитив = Список[индекс].Копировать();

            СписокВладельцевЭлементов[индекс].Add(элемент.СобственныйАдресПримитива);
            //собственный адрес элемента еще не определен, указывается адрес в Куче адреса
            //Подписать на изменеия значения, адреса, значения примитива

            return(элемент);
        }