![]() |
|
Модераторы: Daevaorn Страницы: (89) « Первая ... 36 37 [38] 39 40 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]()
|
|
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
а теперь расскажите, что Вам нужно сделать, чтоб работать с этой реализацией:
|
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
![]() |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
http://liveworkspace.org/code/2a06fead0535...966b9a7e53761fa Это сообщение отредактировал(а) mes - 23.11.2010, 10:29 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
хм
но от кодогенерации отказаться все равно проблематично... Это сообщение отредактировал(а) boostcoder - 23.11.2010, 11:05 |
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
1. кодогенерация, на которую не опирается код не страшна.. 2. никаких извращений с кодогенераций тут не нужно.. все решается "стандартными" средствами.. Добавлено через 12 минут и 59 секунд
это заменяется на mpl::vector
это тоже автоматизируется на основе списка типов.. при том можно предоставлять различные стратегии "расчета" id..
тут вначале надо привести к удобовариваему виду и определить требования.. после видно будет.. решение в лоб через макросы не очень красиво.. |
||||||
|
|||||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
ну вобщем...
я согласен с mes. добавить что-нить трудно. только есть чувство... что ход мысли mes я понимаю, а boostcoderа не всегда. и кажется понимаю причину: я привык идти от задачи, а тут все глубже - в детали реализации. Добавлено через 2 минуты и 42 секунды вот только места кодогенерации я тут не нахожу, простите. если для реализации сервера используется некий заголовок (описывающий интерфейс), то его (с вероятностью 99%) можно устроить так, что он же будет использоваться на клиенте. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
может опишем задачу с самого начала? про RPC и иже понятно.
есть два вопроса 1. как публикуется интерфейс? он статичен и известен заранее? или он (предпочтительно) в заголовке в виде методов класса? как много различных клиент-серверов будут основаны на этой архитектуре? может, речь идет об одной реализации, которая будет расширяться со временем? 2. а чего собственно добивается ТС? выразительности кода? простоты реализации клиента? простоты реализации сервера? простоты ввода новых методов в клиент и сервер (если это единственная реализация, развивающаяся во времени)? еще что-то? |
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
допустим имеем набор сообщений..
обработчика для этих сообщений
тогда нам нужен прокси класс.. он может выглядить так :
вот теперь надо подумать, стоит ли тут кодогенерить или все ж не так много букв, чтоб скрывать что то.. P.S. над msg4 я специально "поиздевался" чтоб показать возможность "не прямого" отражения сообщений на методы.. Это сообщение отредактировал(а) mes - 23.11.2010, 17:29 |
||||||
|
|||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
mes, я не понимаю как в bot::on_ident_ok() можно передать значения не писав сериализацию/десериализацию и подставление значений в методы вручную.
Добавлено через 10 минут и 15 секунд простите за глупый вопрос, но Ваш код перестал работать. я connection вставил в main(), и в bot передаю ссылку на него. и все. |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
сериализация /десериализация нужна нам чтоб преодолеть границу приложения.. не понял о чем тут речь.. Добавлено через 4 минуты и 34 секунды
ссылку в студию |
||||
|
|||||
| boostcoder |
|
||||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
http://liveworkspace.org/code/6e36b8856cbb...5dd99ff2cbefa03 Добавлено @ 19:16 Вы предпочитаете слать типы:
поэтому их свойства вписываете руками. сериализацию тоже. тут все понятно. но я за интерфейсы. поэтому, мне нужно в интерфейсах паковать аргументы в некоторую сгенеренную для этого метода структуру, и сериализовать ее. на обратной стороне десериализовать, и подставить ее члены в вызов реального метода. но это не важно сейчас...
вот как я это реализовал. если метод не возвращает никакого значения, то сгенерится так:
Это сообщение отредактировал(а) boostcoder - 23.11.2010, 19:18 |
||||||
|
|||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
когда vtable находилась в статической области, она обнулялась, а для автоматической памяти она заполнена мусором.. и соответветсвенно проверка на ноль не срабатывает, а aaa::join handler не установлен - следовательно вызов по невалидному указателю .. Добавлено через 1 минуту и 14 секунд сам простой вариант.. закомментируйте передачу aaa:join в соединение.. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
понял. http://liveworkspace.org/code/579c17cdd427...be4943ae1dbab2c |
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ах да я чего то забыл, что у нас уже есть фичи нового стандарта
Добавлено через 6 минут и 44 секунды этим вы обрубаете себе возможность, соотносить вызов один ко многим.. Добавлено через 11 минут и 14 секунд
http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%...%BD%D0%B8%D0%B5 :
с учетом того, что накладные расходы (сериализация) нас не смущают.. Добавлено через 13 минут и 17 секунд т.е. двойная работа.. описание абстрактных интерфейсов.. впихивание в рамки.. а после одноразовое наследование и никакого полиморфизма ... так чего то тянуть ненужное ? Это сообщение отредактировал(а) mes - 23.11.2010, 19:27 |
||||||
|
|||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
епс кучу всего нужно переписать... Добавлено через 56 секунд превосходный пример |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |