![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| mes |
|
||||||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
недождался я Вашего базового класса, терпеть больше не могу, выкладываю свои мысли. У вас есть два вида типов интерфейса пакета, один это пользовательские данные такие как :
ничего больше, чем нужно пользователю, тут быть не должно.. второй это оболочка над пользовательскими данными, позволяющая управлять пакетом, и желательно чтоб можно было управлять полиморфно.. т.е. абстрактный интерфейс например такой :
терь нам осталось только совместить первое со вторым в одном классе.. делаем шаблон :
для работы такой конструкции нужны гарантии копирования с пользовательской стороны, либо копиконструктор либо соответсвие клонейбл идиологии.. ну и для передачи по сети нам нужен ид. Получать мы его можем автоматом на основе списка типов:
ну и естественно перед использованием списков типов нужно избавиться в нем от дубликатов(на всякий случай) P.S. чему равен аналог Loki::IndexOf<> в бусте не знаю, но если его нету, то и самому написать не сложно.. Это сообщение отредактировал(а) mes - 14.10.2010, 14:53 |
||||||||||
|
|||||||||||
| boostcoder |
|
||||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
mes, большое спасибо
я не в коем случае не забил на задачу, т.к. она мне как воздух важна. но приходится еще и другими проектами заниматься. естественно, все эти дни я не дурью маялся, и тоже кое-что накодил сейчас, мой метагенератор, умеет генерить абстрактный класс для айпишек предоставляемых юзеру. т.е. этот код:
сгенерит это:
как вы можете заметить, теперь метагенератор умеет генерить настоящие структуры вместо обертки над тьюплами. класс registration_api - базовый для реализации методов-обработчиков соответствующих типов. т.е. юзер должен от него унаследоваться и реализовать их. на стороне сервера используется так:
вот зы может попросить модераторов чтоб перенести в первоначальную тему? |
||||||
|
|||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
этим занимается метагенератор. правда сейчас он генерит один ID для запроса и ответа, т.к. они являются одним целым. |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
было б хорошо добавить еще и раздельную кодогенерацию.. отдельно структуры, мета-описания и мета-определения.. тогда уж сделайте возможность деления на группы.. т.е. чтоб не один абстрактный класс кодогенерился , а несколько, указынных пользователем, каждый для своего набора пакета.. и... если у Вас то зачем нужен абстрактный класс ? имена и так связаны, а заставлять пользователя без надобности использовать виртуальность не очень прилично.. Добавлено @ 17:38
с ид отдельная история.. с одной стороны делать их абсолютно автоматическими, как показано в моем примере, тоже не годится, но и жестко привязываться в пользовательском коде, тоже не хорошо.. Лучшим вариантом было бы разгрузить через посредника, который бы по типу выдавал нужный ид. Тогда можно выбирать стратегию определения id.. Но их пока оставим на потом.. Это сообщение отредактировал(а) mes - 14.10.2010, 17:42 |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
эм... поясните... так и задумано. хочу в будущем реализовать динамическое связывание объектов по запросу клиента. т.е.:
это переходная версия далее такого не будет. угу. Это сообщение отредактировал(а) boostcoder - 14.10.2010, 17:53 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
наскoлько я понимаю тут не хватает <registration_api> a также заметен сдвиг в сторону асинхроности.. Добавлено @ 18:01
хотелось бы иметь все определения констант в отдельном .cpp файле а также метуинформацию (при этом возможно собранную в структуру, для удбобного пользования) в отдельном .h т.е придется разделить один макрос на три, но как то так, чтоб не пришлось трижды набирать структуру.. т.е. грубо говоря вначале дефайнить описание, а после подвергать различным кодогенерациям в нужном месте.. P.S. через #define может и не получится, а через #include вполне.. хотя первое удобнее.. Это сообщение отредактировал(а) mes - 14.10.2010, 18:05 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
ааа, ну да да-да. конечно. иначе сейчас в одном хидере вся кодогенерация. там черт ногу сломет |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
дело не только в ноге.. сейчас каждое включение хидера будет генерить константы.. т.е. в каждом юните будут свои копии - что не очень..ммм.. культурно... Это сообщение отредактировал(а) mes - 14.10.2010, 18:42 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |