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

Поиск:

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


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


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

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



Цитата(mes @  6.12.2010,  00:36 Найти цитируемый пост)
которую в принципе можно  заменить на такую 
Код

_auth_map
    .on<stc::welcome> (auth::on_welcome, _auth, _1, _2 )
    .on<stc::quit>    (auth::on_quit,    _auth, _1 );
// где аргументы .on связываются bind`ом.. 


мне кажется, чтоб не вызывать путаницы с биндами, конструкция должна выглядить так :
Код

 .on<stc::welcome>() = bind(auth::on_welcome, _auth, _1, _2)
 .on<stc::quit>() = [](std::string const&) {}
 .on<stc::someone>().reset();


Добавлено через 1 минуту и 30 секунд
тогда можно прикрутить сигналы и = заменится на +=, только пока не знаю стоит ли.. 



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


pattern`щик
****


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

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



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

оно так и есть: http://code.google.com/p/discoly/source/br...tributor.hpp#47

Добавлено через 2 минуты и 33 секунды
Цитата(mes @  6.12.2010,  09:31 Найти цитируемый пост)
_auth_map должна быть внутри auth

что-то не так...

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


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


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

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



Цитата(boostcoder @  6.12.2010,  11:21 Найти цитируемый пост)
auth - это реализация? вроде бы да. откуда и почему у нее должна быть своя карта? 

оттуда же, откуда есть vtable у полиморфного объекта  smile



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


pattern`щик
****


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

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



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


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


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

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



Цитата(boostcoder @  6.12.2010,  11:21 Найти цитируемый пост)
оно так и есть: 

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

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

карта всего лишь способ реализации.. главное объект-обработчик сам может определять какие сообщение он отправляет, какие получает..

Добавлено @ 13:29
если бы С++ был более динамичным и поддерживал бы множественную диспатчеризацию, то код был бы примерно таким :

Код

struct auth 
{ 
      void on  ( virtual i_packet const& pack); // dispatch
     
      void login  (..) {.. }
      void logout (..) {.. }
  
 protected:
       void on (stc::login const&) {  }
       void on (stc::quit const&) {  }
};

а так как С++ этим к сожалению не обладает, приходиться составлять карту вручную smile

Это сообщение отредактировал(а) mes - 6.12.2010, 13:33


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


pattern`щик
****


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

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



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

так я не об этом.
я о том, что он и так построен на сигналах.

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

нет проблемы. вот пример: http://code.google.com/p/discoly/source/br...services.hpp#73
_on_ping_connection и _on_pong_connection - объекты управления соединением.

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


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


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

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



Цитата(boostcoder @  6.12.2010,  12:41 Найти цитируемый пост)
_on_ping_connection и _on_pong_connection - объекты управления соединением.

ну так таже таблица только в виде разрозненых объектов... 
под проблемой я подразумевал хранение  лишних сведений для рассоединения.. 

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

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




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


pattern`щик
****


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

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



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

ну если это опционально - то ок.

Цитата(mes @  6.12.2010,  13:47 Найти цитируемый пост)
ну так таже таблица только в виде разрозненых объектов... 
под проблемой я подразумевал хранение  лишних сведений для рассоединения.. 

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


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


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

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



Цитата(boostcoder @  6.12.2010,  12:41 Найти цитируемый пост)
так я не об этом.
я о том, что он и так построен на сигналах.

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

Добавлено через 52 секунды
Цитата(boostcoder @  6.12.2010,  12:53 Найти цитируемый пост)
ну если это опционально - то ок.

опционально (частный случай) получается как раз случай с общим дистрибьютером smile




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


pattern`щик
****


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

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



Цитата(mes @  6.12.2010,  13:54 Найти цитируемый пост)
зато не позволяет раскидывать сообщение на параметры..

поясните.

Цитата(mes @  6.12.2010,  13:54 Найти цитируемый пост)
не может образовывать иерархию.. 

поясните.

Цитата(mes @  6.12.2010,  13:54 Найти цитируемый пост)
не позволяет оперировать группами.. 

а это зачем?
PM WWW   Вверх
mes
Дата 6.12.2010, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



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

Добавлено через 43 секунды
к тому же логика обработки может быть гораздо сложней..


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


pattern`щик
****


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

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



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

Вы сейчас говорите о логике, а не о discoly.
PM WWW   Вверх
mes
Дата 6.12.2010, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  6.12.2010,  16:14 Найти цитируемый пост)
Вы сейчас говорите о логике, а не о discoly. 

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



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


pattern`щик
****


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

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



Цитата(mes @  6.12.2010,  17:28 Найти цитируемый пост)
дисколи не должна связывать руки

discoly не может ничего знать о логике того, что с ее помощью реализуют. задача discoly - предоставить удаленный(и, возможно, локальный) вызов.
PM WWW   Вверх
mes
Дата 6.12.2010, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  6.12.2010,  16:38 Найти цитируемый пост)
discoly не может ничего знать о логике того, что с ее помощью реализуют.

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

Цитата(boostcoder @  6.12.2010,  16:38 Найти цитируемый пост)
 задача discoly - предоставить удаленный(и, возможно, локальный) вызов.

если только вызов то это чистое rpc.. судя по названию она должна уметь несколько большее smile


--------------------
PM MAIL 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.0786 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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