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

Поиск:

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


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


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

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



рецепторы лучше не выносить наружу.. знаний о бинде достаточно.. т.е. регистрация в perception`e должна придерживаться концепции (упомянутой выше)

Код

 _perception
 .on<msg1>() = std::bind (std::ref(sig1), _1, _2)
 .on<msg2>() = std::bind (client::on_msg2, this, _1, _2)
 .on<msg3>() = [this](int i, int j) {}
 ;
 


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


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


pattern`щик
****


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

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



Цитата(mes @  8.12.2010,  22:28 Найти цитируемый пост)
.on<msg1>() = std::bind (std::ref(sig1), _1, _2)

тут, насколько я понимаю, предполагается что on<>() вернет ссылку на boost::function<>(), так?
но а как же возможность подключения нескольких слотов к одной команде?
или это только в примере Вы так реализовали? или я опять что-то пропустил?

Добавлено через 3 минуты и 32 секунды
Цитата(mes @  8.12.2010,  22:28 Найти цитируемый пост)
sig1

эм.. это же и есть сигнал. но его operator() в приведенном примере будет выполнен в момент выполнения boost::function::operator() - это понятно. не понятно, где "живут" сигналы, и каким образом к ним коннектится?
PM WWW   Вверх
mes
Дата 9.12.2010, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  9.12.2010,  10:27 Найти цитируемый пост)
тут, насколько я понимаю, предполагается что on<>() вернет ссылку на boost::function<>(), так?

ага
Цитата(boostcoder @  9.12.2010,  10:27 Найти цитируемый пост)
но а как же возможность подключения нескольких слотов к одной команде?

скорей всего на этом уровне не нужно.. дальше виднее будет.. 

Цитата(boostcoder @  9.12.2010,  10:27 Найти цитируемый пост)
. не понятно, где "живут" сигналы, и каким образом к ним коннектится? 

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

Добавлено через 2 минуты и 27 секунд
Цитата(boostcoder @  9.12.2010,  10:27 Найти цитируемый пост)
тут, насколько я понимаю, предполагается что on<>() вернет ссылку на boost::function<>(), так?

угу, на один рецептор приходится одна переменная функция.. 


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


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


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

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



Цитата(mes @  9.12.2010,  10:51 Найти цитируемый пост)
на один рецептор приходится одна переменная функция..  

хотя нам ничего не мешает вместо использовать сигнал вместо функции.. 
в любом случае на концепции это не отражается...
только синтаксис для on<>() продумать...

Добавлено @ 12:23
Цитата(mes @  9.12.2010,  11:18 Найти цитируемый пост)
использовать сигнал вместо функции..

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

Это сообщение отредактировал(а) mes - 9.12.2010, 12:36


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


pattern`щик
****


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

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



Цитата(mes @  9.12.2010,  12:18 Найти цитируемый пост)
в принципе можно задавать настройками шаблона

вариант. нужно расширить шаблоны на один параметр. лишним не будет.


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


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


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

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



Цитата(boostcoder @  9.12.2010,  11:46 Найти цитируемый пост)
вариант. нужно расширить шаблоны на один параметр. лишним не будет.

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


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


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


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

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



понял что требуется.. нужны два шаблона
1. для типа функции void (P1, P2,... PN) вернет тип  void (Target, P1, P2,... PN)
2. приняв на вход бинд с N-параметрами,  вернет бинд с N-1 параметрами, привязав нужное значение.. 
случайно нет нигде ничего похожего ?




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


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


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

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



Цитата(mes @  9.12.2010,  14:32 Найти цитируемый пост)
1. для типа функции void (P1, P2,... PN) вернет тип  void (Target, P1, P2,... PN)

т.е. автоматизировать это :
Код

typedef void(src_t) (int,int);

struct T {};
typedef void(dst_t) (T&, int,int); // или T*


Цитата(mes @  9.12.2010,  14:32 Найти цитируемый пост)
2. приняв на вход бинд с N-параметрами,  вернет бинд с N-1 параметрами, привязав нужное значение.. 

для автоматизации этого :
Код

template <typename T, typename src_t, typename dst_t>
std::function<dst_t> test (T& o, std::function<src_t> fn )
{
   std::function<dst_t> f = std::bind (fn, &o , _1, _2); // сейчас зависимость от кол-ва плейсхолдеров.. 
}

 smile  smile 


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


pattern`щик
****


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

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



не встречал.
нужно самому писать. благо у boost::function достаточно информации для mpl.

Добавлено через 1 минуту и 14 секунд
зы
у провайдера LWS идут работы по замене оборудования. так что возможны перебои в работе.

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


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


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

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



Цитата(boostcoder @  9.12.2010,  16:57 Найти цитируемый пост)
. благо у boost::function достаточно информации для mpl.

ага посмотрел.. и нужна даже не boost.function, а boost.function_types lib..

Это сообщение отредактировал(а) mes - 9.12.2010, 23:57


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


pattern`щик
****


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

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



еще гляньте boost.type_traits
PM WWW   Вверх
mes
Дата 10.12.2010, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  9.12.2010,  23:43 Найти цитируемый пост)
еще гляньте boost.type_traits 

это видел.. но прямого отношения к текущей задаче не имеет.. 
smile

Добавлено через 1 минуту и 57 секунд
мне тут вот еще одно название в голову пришло - migrant (вместо rawblock) раз границу пересекает smile



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


pattern`щик
****


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

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



оно кстати в стандарте в хидере type_traits. в нем есть многое из буста, но не все. документации по этому хидеру я так же не нашел smile 
есть из драфта: http://www.open-std.org/jtc1/sc22/wg21/doc.../2009/n2984.htm
и для ориентирования я запостил сам хидер: http://liveworkspace.org/code/3de81235ad92...cfd7f85cc8f72fd

Добавлено через 43 секунды
Цитата(mes @  10.12.2010,  00:52 Найти цитируемый пост)
migrant

Вы часто меняете имена типов. путаюсь smile 
PM WWW   Вверх
mes
Дата 10.12.2010, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  9.12.2010,  23:55 Найти цитируемый пост)
Вы часто меняете имена типов. путаюсь   

потому что не нравятся..

Добавлено через 1 минуту и 32 секунды
если имена какие то не нравятся я с удовольствием выслушаю критику smile

Добавлено через 1 минуту и 50 секунд
ее (критики) чего то маловато в этой теме smile


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


pattern`щик
****


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

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



Цитата(mes @  10.12.2010,  01:00 Найти цитируемый пост)
если имена какие то не нравятся я с удовольствием выслушаю критику

это не суть важно, чтоб критиковать. просто высказал мысль smile 

Цитата(mes @  10.12.2010,  01:00 Найти цитируемый пост)
ее (критики) чего то маловато в этой теме

с Вами сложно спорить. это затягивается на несколько страниц smile 
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.0764 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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