Esempio n. 1
0
    public override АМОбъект ВыполнитьКоманду(Команда команда)
    {
        //добавить команду в очередь, если очередь есть
        if (клиент == null || !клиент.Connected)
        {
            var рез = УстановитьСвязь(); // если связь установить не удалось
            if (рез == false)
            {
                return(new СтрокаЮникода("сервер не доступен"));           // или запуск метода обработки
            }
        }


        var команда2 = new Команда("ПередайКомандуОбъекту", команда); // команда серверу это связь на стороне приемника

        команда.СохранисьВ(поток);

        var результат = АМОбъект.Создать(поток);

        if (!СохранятьСвязь)
        {
            клиент.Close();
            клиент = null;
        }

        return(результат);
    }
Esempio n. 2
0
    public АМОбъект Выполнить(Команда команда)  // схоже с получи сообщение в активности
    {
        ПолучитьКопию();
        var рез = АдресВКучеКопияУдаленногоОбъекта.ВыполнитьКоманду(команда); // если это группаадресов, а адреса эти в другом удалееном  хранилище, то потребуются запросы

        // адреса получаемые надо модифицировать добавляя текущий адрес объекта
        // команда "дайобъектПоиндексу (10)" копия содержит адрес в удалееном хранилище
        // или в момент получения группы по команде ДайОбъект
        return(рез);
    }
Esempio n. 3
0
    public ГруппаОбъектов СписокКоманд() // надо заменить на группу (группу адресов или закрытую группу, группа адресов требует повторных запросов, добавить генерик группу (типизированную)
    {
        var команда = new Команда()
        {
            Имя = new СтрокаЮникода()
            {
                Значение = "ДайКоманды"
            }
        };

        return((ГруппаОбъектов)Выполнить(команда));
    }
Esempio n. 4
0
    // только для хранителя копий (добавить еще версию, время обновления, способ обновления, тип хранителя, степень риска, список рисков
    // для контроля ресурсов нужно добавить размеры входного и исходящего буфера (для целого цисла нет смысла в большом буфере)

    // спиок команд к заместителю должен совпадать со списком команд к самому объекту
    // сценарий его восстановления
    // востанавливается адрес удаленный , возможно копия , если сервер или сервера не доступен
    // устаналивается связь ТСП
    // передается команда ДайОбъектПоИндексу, получается группа адресов
    // в этой группе ищется адрес по индексу (поиск может проводиться и на сервере надо особо указывать)
    // получается адрес объекта , снова Команда ДайОбъектПоИндексу
    // получается конечный объект (например Целое), можно и не получать копию объекта Это всего лишь кэш, где можно получить его значение (возможно устаревшее)
    // посылается команда к объекту ДайЗначение (хотя Целое это уже примитив)
    // каждый раз Получая команду от внешнего по отношению к заместителю объекта ДайЗначение надо проходить всю процедуру заново, получать целое и уже его возвращать
    // здесь адрес уже нужен в форме команды, тогда можно указать последовательность действий, чтобы не скачивать группу адресов

    // заместитеь можно использовать как шлюз ко всем удаленным объектам с одним IP
    // т.е. это доступ к целой группе например по индексу и копияудаленного объекта все время разная
    // правда адреса у всех объектов разные и тогда смысла в адресе нет



    // это команды к заместителю, хотя можно обратиться к копииУдаленногоОбъекта, к кому напрвлять команды зависит от спосба хранения копии
    // 1 способ полностью скачать объект и команды к копии,
    // 2 не качать объект, переправлять все команды к удаленному объекту
    public АМОбъект Выполнить(Команда команда)
    {
        var команда2 = new Команда()
        {
            Имя = new СтрокаЮникода()
            {
                Значение = "ВыполниКоманду"
            }
        };

        команда2.Параметры[0] = команда;

        var рез = ТспСвязь.ВыполнитьКоманду(команда2); //для

        return(рез);
    }
Esempio n. 5
0
    // только для хранителя копий (добавить еще версию, время обновления, способ обновления, тип хранителя, степень риска, список рисков
    // для контроля ресурсов нужно добавить размеры входного и исходящего буфера (для целого цисла нет смысла в большом буфере)

    // спиок команд к заместителю должен совпадать со списком команд к самому объекту
    // сценарий его восстановления
    // востанавливается адрес удаленный , возможно копия , если сервер или сервера не доступен
    // устаналивается связь ТСП
    // передается команда ДайОбъектПоИндексу, получается группа адресов
    // в этой группе ищется адрес по индексу (поиск может проводиться и на сервере надо особо указывать)
    // получается адрес объекта , снова Команда ДайОбъектПоИндексу
    // получается конечный объект (например Целое), можно и не получать копию объекта Это всего лишь кэш, где можно получить его значение (возможно устаревшее)
    // посылается команда к объекту ДайЗначение (хотя Целое это уже примитив)
    // каждый раз Получая команду от внешнего по отношению к заместителю объекта ДайЗначение надо проходить всю процедуру заново, получать целое и уже его возвращать
    // здесь адрес уже нужен в форме команды, тогда можно указать последовательность действий, чтобы не скачивать группу адресов

    // заместитеь можно использовать как шлюз ко всем удаленным объектам с одним IP
    // т.е. это доступ к целой группе например по индексу и копияудаленного объекта все время разная
    // правда адреса у всех объектов разные и тогда смысла в адресе нет



    // это команды к заместителю, хотя можно обратиться к копииУдаленногоОбъекта, к кому напрвлять команды зависит от спосба хранения копии
    // 1 способ полностью скачать объект и команды к копии,
    // 2 не качать объект, переправлять все команды к удаленному объекту
    public ПримитивИлиАдрес Выполнить(Команда команда)
    {
        var команда2 = new Команда()
        {
            Имя = new Строка()
            {
                Значение = "ВыполниКоманду"
            }
        };

        команда2.Параметры[0] = команда;

        var рез = ТспСвязь.ВыполнитьКоманду(команда2); //для

        return(рез);
    }
Esempio n. 6
0
    public void ПолучитьКопию()
    {
        var адрес = new Команда("ДайОбъект", new АдресВХранилище()
        {
            НомерВХранилище = 10
        });                                                                                            // команда Хранилищу

        var команда2 = new Команда("ПередайКомандуОбъекту", ПолныйАдресОбъекта);                       // команда серверу это связь на стороне приемника

        var команда = new Команда("ПередатьИПолучить", команда2);                                      // команда ТСПСвязи клиенту это и есть адрес связь на стороне передадчика

        АдресВКучеКопияУдаленногоОбъекта = ТспСвязь.ВыполнитьКоманду(команда);                         // создается новый объект и его адрес помещается в поле, старый объект в мусорку
        var старыйАдресВХрнилище = АдресВХранилище_КопииУдаленногоОбъекта;                             // что-то надо с ним сделать, пометить на удаление

        АдресВХранилище_КопииУдаленногоОбъекта = Хранилище.Добавить(АдресВКучеКопияУдаленногоОбъекта); // добавляется в конец, старый адрес забывается


        АдресВКучеКопияУдаленногоОбъекта = ТспСвязь.ВыполнитьКоманду(new Команда("ДайОбъект")); //это для получения самого объекта  примитива группы
        АдресВКучеКопияУдаленногоОбъекта.СобственныйАдресПримитива = ПолныйАдресОбъекта;        // обращение по команде Выполнить(команда) должно содержать
        // обработка Копии объекта
        // если Копия это адрес, то его надо дополнить адресом ПолнымАдресомОбъекта
    }