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

Поиск:

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


pattern`щик
****


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

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



Цитата(mes @  25.11.2010,  16:44 Найти цитируемый пост)
давайте разберем, что у нас есть..

первое - основная проблема у меня в том, что мне приходится адаптировать ваше видение принципов, с моим. тут два варианта: 1)переписать discoly полностью в соответствии с вашим видением, 2)"уговорить" Вас изменить ваше видение, на мое smile 
но я пойду первым способом.

второе - сейчас, я из всего что есть, создам локальный проект так как я понял. и закомичу его на SVN. будем от этого опираться.
PM WWW   Вверх
mes
Дата 25.11.2010, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



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




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


pattern`щик
****


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

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



Цитата(mes @  25.11.2010,  17:18 Найти цитируемый пост)
есть одно но... у меня нет под рукой нормального компилятора и не могу проверить на правильность..делал на ощупь.. 

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


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


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

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



Цитата(boostcoder @  25.11.2010,  16:31 Найти цитируемый пост)

оно даже скомпилилось и работает сходу!

приятно слышать  smile 

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


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


pattern`щик
****


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

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



сейчас поизучаю Ваш код, и задам кучу вопросов..
PM WWW   Вверх
mes
Дата 25.11.2010, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  25.11.2010,  16:58 Найти цитируемый пост)
 задам кучу вопросов.. 

ждем-с..



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


pattern`щик
****


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

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



1. почему у client_side::client такой набор методов? т.е. предполагается что клиент и сервер имеют только такой функционал и набор команд? если нет - то как расширять набор команд, если они в классе клиента? не писать же клиента для каждого проекта.
2. в client_side::client есть такое:
Код

  typedef net::stc::ident_ok  M1;
  typedef net::stc::ident_no  M2;
  typedef net::stc::talkmsg   M3;

это, как я понимаю, должен быть список типов поддерживаемых(обрабатываемых) команд?
3. функция discoly::reg<> имеет такое тело:
Код

      c.bind<typename T::M1,T,D>(target);
      c.bind<typename T::M2,T,D>(target);
      c.bind<typename T::M3,T,D>(target);

хотя, по сути, тут должен быть типа boost::mpl::for_each<> который будет работать со списком типов(пункт 2)?

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


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


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

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



Цитата(boostcoder @  25.11.2010,  18:01 Найти цитируемый пост)
 почему у client_side::client такой набор методов? т.е. предполагается что клиент и сервер имеют только такой функционал и набор команд? если нет - то как расширять набор команд, если они в классе клиента? не писать же клиента для каждого проекта.

общий ответ - наследовать и добавлять нужные определения.. 
но для хороший расширяемости, нужно делать клиент сборный из составляющих (из агентов) но это позже.. и к самой дисколи отношения не имеет..

Добавлено через 3 минуты и 15 секунд
Цитата(boostcoder @  25.11.2010,  18:01 Найти цитируемый пост)
это, как я понимаю, должен быть список типов поддерживаемых(обрабатываемых) команд?

да, typedef  mpl::vector<M1,M2,M3> discoly_accepted_msglist;

Добавлено через 4 минуты и 45 секунд
по идеи один объект может содержать несколько таких списков, для регистрации в разных соедениниях..

Добавлено через 5 минут
но это тоже позже..

Добавлено через 5 минут и 47 секунд
Цитата(boostcoder @  25.11.2010,  18:01 Найти цитируемый пост)
хотя, по сути, тут должен быть типа boost::mpl::for_each<> который будет работать со списком типов(пункт 2)?

да.. оставил Вам для доработки (мне лень) smile

Добавлено через 11 минут и 30 секунд
Цитата(boostcoder @  25.11.2010,  18:01 Найти цитируемый пост)
 если нет - то как расширять набор команд

чтоб лучше понять как работает статический полиморфизм советую ознакомиться с реализацией паттерна CRTP..



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


pattern`щик
****


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

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



Цитата(mes @  25.11.2010,  19:04 Найти цитируемый пост)
советую ознакомиться с реализацией паттерна CRTP

какбы читал, использовал..сейчас еще раз полистаю..
PM WWW   Вверх
mes
Дата 25.11.2010, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(mes @  25.11.2010,  18:04 Найти цитируемый пост)
общий ответ - наследовать и добавлять нужные определения.. 

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



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


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


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

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



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

Добавлено через 2 минуты и 45 секунд
например есть два агента.. они хотят говорить с другом.. но они имеют одинаковый набор команд..
если поставить их на одно соединение, то каждый будет получать также и свои команды.. 
тут надо разгружать через сервер, или делать многоканальность..

Добавлено через 3 минуты и 32 секунды
вот о втором варианте можно как раз и подумать..



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


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


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

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



Цитата(mes @  25.11.2010,  18:48 Найти цитируемый пост)
вот о втором варианте можно как раз и подумать..


вот решение на основе уже ранее используемоего "трюка" по перекрестному биндингу сендера и ресивера..

http://liveworkspace.org/code/d440a552e507...ca7dbc5de9ffe21

терь надо это все как-то красиво разрулить... 



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


pattern`щик
****


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

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



mes, я сейчас тупо перечитываю Ваш код чтоб избавится от ассоциаций smile 
PM WWW   Вверх
mes
Дата 25.11.2010, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  25.11.2010,  20:39 Найти цитируемый пост)
избавится от ассоциаций

от каких ? может я подскажу как smile


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


pattern`щик
****


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

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



Цитата(mes @  25.11.2010,  23:17 Найти цитируемый пост)
от каких ?

от тех, каким путем я шел до сих пор. и какой я видел реализацию/результат..
...даже не знаю как объяснить...мешанина в голове.
сейчас я просто изучаю Ваш код..экспериментирую...с отдельными частями..
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.0695 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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