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

Поиск:

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


pattern`щик
****


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

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



mes, добрый день Вам.
переделал под буст.сигналы: http://liveworkspace.org/code/b3651455d4b6...4807191b70c2e3a
гляньте плиз. я ничего не накосячил smile 

далее..
у разработчика игры узнал по поводу толстого/тонкого клиента. все правильно. клиент тонкий.

далее...
Цитата(mes @  4.11.2010,  09:30 Найти цитируемый пост)
а также ждем когда доберетесь до user_context , там то Вам контроллеров не избежать (если конечно не хотите неповоротливого монолита), но там нужны только контролеры, а ифейсы нет..

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

Добавлено через 5 минут и 29 секунд
Вы случаем не в курсе, как биндить перегруженные функции?
http://liveworkspace.org/code/3415a6646b7c...431f41eb08e4071
PM WWW   Вверх
boostcoder
Дата 4.11.2010, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



Цитата(boostcoder @  4.11.2010,  12:21 Найти цитируемый пост)
Вы случаем не в курсе, как биндить перегруженные функции?

так: http://liveworkspace.org/code/1eb478dd937b...3578765f314ffe0
PM WWW   Вверх
mes
Дата 4.11.2010, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  4.11.2010,  11:21 Найти цитируемый пост)
гляньте плиз. я ничего не накосячил

вроде все так , с учетом того что вместо воид* пакет.. smile

Код

m_distr.on<type1>().connect(

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

Добавлено через 7 минут и 43 секунды
Цитата(boostcoder @  4.11.2010,  11:21 Найти цитируемый пост)
развейте(от слова развивать. не знаю как правильно склонить) пожалуйста эту мысль дальше. т.к. мне, в данный момент, не понятно, как/почему/зачем в юзер_контексте мне контролеры. какие плюсы/минусы и в чем может быть сложность если не использовать контроллеры.

ну юзер контекст может предоставлять несколько сервисов..
ну уже известные нам auth, ping 
так же game, как целевой сервис
возможно чат - как дополнительный..

если разделить на контролы, то легко будет добавить новый сервис не затрагивая другие..

Добавлено через 8 минут и 27 секунд
Цитата(boostcoder @  4.11.2010,  11:37 Найти цитируемый пост)
так: http://liveworkspace.org/code/1eb478dd937b...3578765f314ffe0 

ага, путем указания нужного типа.. 



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


pattern`щик
****


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

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



Цитата(mes @  4.11.2010,  12:55 Найти цитируемый пост)
это можно будет разгружать через шаблонную функцию.. для удобства

вроде назрел очередной вопрос:
т.к. при декларации обработчиков хочется использовать такой синтаксис:
Код

CLASS_BEGIN(test)
   DECLARE_METHOD(int, method, const std::string&, int, const char*)
   DECLARE_METHOD(void, method, const std::vector<int>&, int)
CLASS_END()

метагенератору, из списка аргументов нужно будет сгенерить структуру. имя структуре он должен назначать сам. далее..он должен сгенерить класс с этими методами. далее..он должен сгенерить junction(по текущей реализации) и все что в нем. вот только я не у верен в том, как структуру разобрать на члены и передать их сигналу(строка 36 в последнем коде)? ведь класс invoker у нас не генерируемый.

какие есть варианты?

Добавлено @ 13:23
Цитата(mes @  4.11.2010,  12:55 Найти цитируемый пост)
ну юзер контекст может предоставлять несколько сервисов..
ну уже известные нам auth, ping 
так же game, как целевой сервис
возможно чат - как дополнительный..

если разделить на контролы, то легко будет добавить новый сервис не затрагивая другие..

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

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


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


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

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



Цитата(boostcoder @  4.11.2010,  12:19 Найти цитируемый пост)
вроде назрел очередной вопрос:
т.к. при декларации обработчиков хочется использовать такой синтаксис:

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



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


pattern`щик
****


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

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



Цитата(mes @  4.11.2010,  13:50 Найти цитируемый пост)
у вас нет тестового примера.. по которму вы могли бы представить конечный исход метагенерации.. 

я могу представить конечный исход метагенерации. т.е. в каком виде хочется это видеть.
что именно Вы хотите сказать?
PM WWW   Вверх
mes
Дата 4.11.2010, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  4.11.2010,  12:19 Найти цитируемый пост)
етагенератору, из списка аргументов нужно будет сгенерить структуру. имя структуре он должен назначать сам. далее..он должен сгенерить класс с этими методами. далее..он должен сгенерить junction(по текущей реализации) и все что в нем. вот только  я не у верен в том, как структуру разобрать на члены и передать их сигналу(строка 36 в последнем коде)? ведь класс invoker у нас не генерируемый.

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




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


pattern`щик
****


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

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



Цитата(mes @  4.11.2010,  13:55 Найти цитируемый пост)
класс контролеры, предоставляют реализацию, а значит написаны програмистом.. 

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

а как Вы это представляете?

Цитата(mes @  4.11.2010,  13:55 Найти цитируемый пост)
а вот связку нужно автоматизировать.. но для этого надо либо задать методам обработчика одинаковое имя, и тогда можно подключать по списку типов, либо указав карту соответсвий...Как это удобнее сделать будет видно в процессе.. 

ок.
что сейчас нужно реализовать, зная цель?
PM WWW   Вверх
mes
Дата 4.11.2010, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  4.11.2010,  12:19 Найти цитируемый пост)
а то, как это у нас сейчас, разве не то? есть классы обработчики, есть команды, есть возможность назначать команде обработчик.
вот только пока нет возможности создавать классы обработчики по запросу. вроде как и до этого уже дошли.

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

Добавлено через 1 минуту и 24 секунды
Цитата(boostcoder @  4.11.2010,  13:00 Найти цитируемый пост)
что сейчас нужно реализовать, зная цель? 

испытание.. такое как например у нас было с ресиверов, в конце которого пришли к сигналам.. smile



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


pattern`щик
****


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

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



Цитата(boostcoder @  4.11.2010,  13:19 Найти цитируемый пост)

вот только я не у верен в том, как структуру разобрать на члены и передать их сигналу(строка 36 в последнем коде)? ведь класс invoker у нас не генерируемый.
какие есть варианты?

решил таким способом: http://liveworkspace.org/code/1ffbd8a94c5b...b7ad11428bdb159

сейчас хочу реализовать возможность возврата вызывающей стороне, результат, возвращаемого методом.
т.е. если сигнатура такая: "void type3::fn(...)", чтоб не сериализовать и не отсылать всякий хлам.

есть предложения?


Цитата(mes @  4.11.2010,  14:00 Найти цитируемый пост)
ну а где тестовый пример с нормальным обработчиком, а не просто принимающего команду..
нужно хотя бы пример, чтоб разобрать видов 5 разнообразных маршрутов, чтоб убедиться в требованиях к нему..

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


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


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

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



Цитата(boostcoder @  4.11.2010,  17:38 Найти цитируемый пост)
смотрите этот код. т.к. сетевое взаимодействие нам не интересно. 

дело не в сети, а в сформулированных требованиях к этому слою.. у меня их нет smile

Добавлено @ 19:10
Цитата(boostcoder @  4.11.2010,  17:38 Найти цитируемый пост)
сейчас хочу реализовать возможность возврата вызывающей стороне, результат, возвращаемого методом.
т.е. если сигнатура такая: "void type3::fn(...)", чтоб не сериализовать и не отсылать всякий хлам.

не понял смысла предложения..

Добавлено @ 19:21
Цитата(boostcoder @  4.11.2010,  17:38 Найти цитируемый пост)
решил таким способом: http://liveworkspace.org/code/1ffbd8a94c5b...b7ad11428bdb159

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

и насколько я понимаю, то что вы делаете есть в fusion::invoke..



Это сообщение отредактировал(а) mes - 4.11.2010, 19:22


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


pattern`щик
****


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

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



Цитата(mes @  4.11.2010,  19:09 Найти цитируемый пост)
не понял смысла предложения..

ну вот смотрите..
Вы - клиент.
вызываете метод сервера:
Код

std::string res = server.call();

т.е. посылается команда..ожидаете ответа..получаете ответ.

а теперь такой пример:
Код

server.void_call();

этот вызов возвращает void. зачем серверу что-то отсылать обратно?

Добавлено через 1 минуту и 7 секунд
Цитата(mes @  4.11.2010,  19:09 Найти цитируемый пост)
и насколько я понимаю, то что вы делаете есть в fusion::invoke..

он выполнит f() для каждого типа из seq.
PM WWW   Вверх
mes
Дата 4.11.2010, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



мы никогда не ожидаем ответа.. 
клиент вызывает удаленные методы сервера, сервер -  удаленные методы клиента..
ответа как такого нет..

1. ну например вы вызвали команду nick, 
сервер поменял ник и сообщил Вам об этом - косвенно можно принять за запрос-ответ
2. админ поменял послал запрос поменять вам ник, сервер поменял и сообщил Вам об этом..- тут запрос сделал один, а ответ получил другой..
не говоря о ситуациях где сервер посылает запросы..

Добавлено через 1 минуту и 59 секунд
Цитата(boostcoder @  4.11.2010,  18:54 Найти цитируемый пост)
зачем серверу что-то отсылать обратно?

это серверу решать (в соответсвии с протоколом) будет ли он что отсылать или нет.. 



Это сообщение отредактировал(а) mes - 4.11.2010, 20:04


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


pattern`щик
****


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

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



Цитата(mes @  4.11.2010,  20:04 Найти цитируемый пост)
мы никогда не ожидаем ответа.. 
клиент вызывает удаленные методы сервера, сервер -  удаленные методы клиента..
ответа как такого нет..

мне кажется не логичным получать ответы в другой обработчик. разрывается логическая цепочка - это не тоже самое, что получить запрос от сервера.
т.е. запрос <--> ответ. либо запрос без ответа.

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


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


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

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



Цитата(boostcoder @  4.11.2010,  19:08 Найти цитируемый пост)
мне кажется не логичным получать ответы в другой обработчик. разрывается логическая цепочка - это не тоже самое, что получить запрос от сервера.

этим и хороша ассинхронность smile


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

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

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

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

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


 




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


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

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