Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удаленный вызов. детали, реализация, архитектура, у темы новое название! 
:(
    Опции темы
boostcoder
Дата 18.1.2011, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



и сервер, сразу реализовал многопользовательский.
PM WWW   Вверх
mes
Дата 18.1.2011, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(mes @  18.1.2011,  16:13 Найти цитируемый пост)
 оказывается Вы добавили,

для снятия boost::function я бы пошел бы этим путем : 
http://liveworkspace.org/code/1ba46ba93e9f...2f6bd6b1e31178b

P.S. enum { value } - лишь для наглядности результата..


Добавлено через 1 минуту и 35 секунд
Цитата(boostcoder @  18.1.2011,  16:32 Найти цитируемый пост)
и сервер, сразу реализовал многопользовательский. 

  smile, уже недождусь завтра smile


--------------------
PM MAIL WWW   Вверх
mes
Дата 23.1.2011, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(mes @  18.1.2011,  16:33 Найти цитируемый пост)
 уже недождусь завтра

так и недождался smile

в продолжение :
Цитата

с одной стороны идея хорошая, связывать при регистрации id и тип..
но с другой стороны лишаемся отсутствия статического контроля..

вот заготовка :
 http://liveworkspace.org/code/c679951bca56...c7d61ccd53bf678
теперь надо добавить получение args_fused, конвертацию типа функции в метод, и запуск метода с aргументами args_fused.. 



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 23.1.2011, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  23.1.2011,  14:42 Найти цитируемый пост)
так и недождался

сорри.. еще не готово. хочу сделать по максимуму, чтоб получить максимум критики касательно более сложных для меня моментов, опуская мелочи smile 

Цитата(mes @  23.1.2011,  14:42 Найти цитируемый пост)
вот заготовка

спасибо. сейчас гляну.

Это сообщение отредактировал(а) boostcoder - 23.1.2011, 14:53
PM WWW   Вверх
mes
Дата 23.1.2011, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



предыдущий пример был ориентирован, на то, что один и тот же (ди_)метод может принадлежать нескольким классам.. но .. можно пойти другим путем.. ближе к "обычному" ООП.. 
пока не знаю как на словах объяснить.. попробую кодом.. 



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 13.2.2011, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата

вопрос был в принципе не о макросе.. а о третьей точке - о точке определения нового типа..

Цитата

например отделить рантайм представление ид от типа ... 

проблема вот с чем: при диспетчеризации вызова, мы все равно, либо проверяем соответствие типов в рантайме, либо попросту отказываемся от этого, рассчитывая на адекватного прогера.
я же, задумался на этим, для локальных вызовов. и все потому, что решил использовать строки в качестве ID`ов. вариант с mpl-hash был бы идеальным. но увы...
PM WWW   Вверх
mes
Дата 14.2.2011, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  13.2.2011,  21:45 Найти цитируемый пост)
проблема вот с чем: при диспетчеризации вызова, мы все равно, либо проверяем соответствие типов в рантайме, либо попросту отказываемся от этого, рассчитывая на адекватного прогера.

нет...  Если на выходах нет способа нарушить типизацию, то неважно как происходит кастование внутри...
т.е. нам важно, чтоб отправка и прием были согласованы по типам, все остальное автоматически согласуется.. 
на этом же основана гарантия безопасности crtp и виртуальных функций..
т.е несмотря на то, что в интерфейсе this определен базовым классам, в  переопределенных функциях представлен типом наследника..

Цитата(boostcoder @  13.2.2011,  21:45 Найти цитируемый пост)
я же, задумался на этим, для локальных вызовов. и все потому, что решил использовать строки в качестве ID`ов. вариант с mpl-hash был бы идеальным. 

если нет связки  { тип, ид }, то он не может быть безопасным по определению.. 
smile



Это сообщение отредактировал(а) mes - 14.2.2011, 00:17


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 14.2.2011, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  14.2.2011,  00:16 Найти цитируемый пост)
если нет связки  { тип, ид }, то он не может быть безопасным по определению..

я потому и пришел к mpl-hash. т.к. сейчас ID - строка. а ее невозможно использовать как параметр шаблона. зато очень удобно в использовании smile 

Это сообщение отредактировал(а) boostcoder - 14.2.2011, 00:39
PM WWW   Вверх
mes
Дата 14.2.2011, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  13.2.2011,  23:30 Найти цитируемый пост)
потому и пришел к mpl-hash. т.к. сейчас ID - строка. а ее невозможно использовать как параметр шаблона. зато очень удобно в использовании

вот и вопрос.. раз все равно нужно ассоциировать ид с типом, то что ж  не определить тип, который и будет гарантом безопасности ?.. А ид использовать уже в рантайме 
smile


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 14.2.2011, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



mes, поздно уже. с ног валюсь. завтра продолжим.
спокойной ночи.

PM WWW   Вверх
boostcoder
Дата 14.2.2011, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  14.2.2011,  00:56 Найти цитируемый пост)
раз все равно нужно ассоциировать ид с типом, то что ж  не определить тип, который и будет гарантом безопасности ?

я это и пытаюсь сделать. прямо сейчас.

PM WWW   Вверх
SenkraD
Дата 14.2.2011, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 2
Всего: 23



Всем добрый день. Как же я давно на граде не был.

всю тему прочитать не осилил, но то те наброски, что видел (и особенно последний от MES) натолкнули на мысль, что может стоит взлянуть на это. правда, когда я это применял, то помню, что слегка повозился при переносе это на g++

P.S. Извините, если это было и полностью не в тему


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
boostcoder
Дата 14.2.2011, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(SenkraD @  14.2.2011,  12:26 Найти цитируемый пост)
может стоит взлянуть на это.

идея та же. но у нас все более затемплечено smile

спасибо.

Добавлено @ 12:33
и наследовать в нашей реализации не нужно.
пример:
Код

// >>>>>>>>>>>>>>>>>>>> server
// server implementation
struct type1 {
   void m1(int v) {
      std::cout << "void type1::m1(" << v << ")" << std::endl;
   }
   int m2(const std::string& s) {
      std::cout << "int type1::m2(" << s << ")" << std::endl;
      return 3;
   }
   void m3() {
      std::cout << "void type1::m3()" << std::endl;
   }
   void m4(int v, const std::string& s) {
      std::cout << "void type1::m4(" << v << ", " << s << ")" << std::endl;
   }
};

// registration
distributor distr;
registry<type1>::type reg1 = distr.registry(&t1, "type1", "test type \"type1\"");
reg1->on(&type1::m1, "m1")
         ->on(&type1::m2, "m2")
         ->on(&type1::m3, "m3")
         ->on(&type1::m4, "m4");

// <<<<<<<<<<<<<<<<<<<< server

// >>>>>>>>>>>>>>>>>>>> client
// dispatcherization
client client(...);
client << remote_call("type1.m1", 33)
           << remote_call("type1.m2", "string")
           << remote_call("type1.m3")
           << remote_call("type1.m4", 44, "55");

// <<<<<<<<<<<<<<<<<<<< client


Это сообщение отредактировал(а) boostcoder - 14.2.2011, 12:41
PM WWW   Вверх
SenkraD
Дата 14.2.2011, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 2
Всего: 23



boostcoder,  вот смотрю на ваш приммер и возникает вопрос: "почему было не сделать это на SOAP?" Как нежданный плюс получили б возможность писать клиенты на разных языках, что добавило б популярности вашему сервису со стороны других разработчиков

P.S. Может выложите конечное решение в отдельном топике?
P.S. Модераторы и командующий состав портала, может давно пора создать ветку, где будем размещать tricks и подобное?


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
boostcoder
Дата 14.2.2011, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(SenkraD @  14.2.2011,  13:29 Найти цитируемый пост)
почему было не сделать это на SOAP?

что мне это даст?
с таким же успехом я мог бы использовать XML. разница в чем?

я уже писал в теме, что пересмотрел кучу реализаций CORBA/SOAP, но ни одна из них, ни чуть не сравнится с тем, что получилось у нас с mes`ом. сравните сами ;)
или я какие-то не такие реализации смотрел?

Добавлено через 3 минуты и 43 секунды
Цитата(SenkraD @  14.2.2011,  13:29 Найти цитируемый пост)
P.S. Может выложите конечное решение в отдельном топике?

угу. конечное решение лежит(лежало) здесь: http://code.google.com/p/discoly/
но уже несколько недель думаю что завтра залью решение. и то одно...то другое...

mes, репозитарий сбросил. все сохранил. ничего не пропало. не переживайте.

Добавлено через 5 минут и 56 секунд
Цитата(SenkraD @  14.2.2011,  13:29 Найти цитируемый пост)
tricks

это что?
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0989 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.