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

Поиск:

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


pattern`щик
****


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

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



Цитата(mes @  17.12.2010,  21:28 Найти цитируемый пост)
как например если мы хотим чтоб импульсы адресовались себе же ?

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

iface1 = _net.get<server_impl, remote>();
iface2 = _net.get<server_impl, local>();


Цитата(mes @  17.12.2010,  21:28 Найти цитируемый пост)
это уже лишняя генерация класса

ну и пусть генериться. у меня это работало smile 
PM WWW   Вверх
mes
Дата 17.12.2010, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  17.12.2010,  20:34 Найти цитируемый пост)
_net

что такое _net ? какой тип  ?

Добавлено @ 21:45
Цитата(boostcoder @  17.12.2010,  20:34 Найти цитируемый пост)
ну и пусть генериться. у меня это работало 

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



Это сообщение отредактировал(а) mes - 17.12.2010, 21:46


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


pattern`щик
****


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

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



Цитата(mes @  17.12.2010,  21:44 Найти цитируемый пост)
что такое _net ? какой тип  ?

ах да.. предполагал net_client. но он же net_client..
т.е. нужно либо net_client и net_server наследовать от общего предка с методом get().. или..еще что-то придумать.

Цитата(mes @  17.12.2010,  21:44 Найти цитируемый пост)
в голове возникает с 10ток конструкций,  где предложеная Вами схема не сработает или будет тяжеловесна.. 

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


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


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

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



Цитата(boostcoder @  17.12.2010,  20:49 Найти цитируемый пост)
например? 

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

могу еще продолжить..




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


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


pattern`щик
****


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

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



Цитата(mes @  17.12.2010,  22:40 Найти цитируемый пост)
1.  ну уже упомянутая локальная диспатчеризация (без лишних затрат и в частности без зависимости от нет_киента)

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

Цитата(mes @  17.12.2010,  22:40 Найти цитируемый пост)
2. групповая обработка типизированных импульсов.. например 
  а. логирование каждого импульса.. 
  б. перенаправление в зависимости от типа.. 
  в. выбор способа конвертации (в мигранта или кого либо другого)

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

Цитата(mes @  17.12.2010,  22:40 Найти цитируемый пост)
3. направление  мигранта.. по тцп_протоколу или какому либо другому.. 

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


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


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

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



Цитата(boostcoder @  17.12.2010,  21:50 Найти цитируемый пост)
получение интерфейса - это не дорогая операция.к примеру, если сравнить с латентностью сети, то она мегадешевая. с локальными, да - можно подумать над этим..

я не про получение.. а про то, что 
во первых будет лишнии серилизация +десериализация,  
во вторых диспатчеризация по свитчу, а не по типу
и в третьих несет зависимости и в частности что один путь импульс<->мигрант..

Добавлено @ 23:08
Цитата
 направление  мигранта.. по тцп_протоколу или какому либо другому.. 

Цитата(boostcoder @  17.12.2010,  21:50 Найти цитируемый пост)
решается первым пунктом. 

получив интерфейс, не возможно будет поменять направление..

Добавлено @ 23:10
Цитата(boostcoder @  17.12.2010,  21:50 Найти цитируемый пост)
 меня это было реализовано подпиской на команды. тоже работает. не жалуюсь.

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

Добавлено @ 23:14
в моем случае "логгер" будет выглядить так :
Код

struct Logger {
   template <typename Im>
   void operator () (Im const& im) 
   {
        std::cout << "Impulse: " << im;
   }
}


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


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


pattern`щик
****


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

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



Цитата(mes @  17.12.2010,  23:04 Найти цитируемый пост)
я не про получение.. а про то, что 
во первых будет лишнии серилизация +десериализация,  
во вторых диспатчеризация по свитчу, а не по типу
и в третьих несет зависимости и в частности что один путь импульс<->мигрант..

понял. какие предложения?

Цитата(mes @  17.12.2010,  23:04 Найти цитируемый пост)
получив интерфейс, не возможно будет поменять направление..

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

Цитата(mes @  17.12.2010,  23:04 Найти цитируемый пост)
хочу пример как вставить логер или любой другой класс-фильтр.. при том тот, что хочет пользователь, а не предусмотренный заранее ..
в моем случае "логгер" будет выглядить так

суть не в том как это реализовано. а в том, что принцип - подписка на команды.

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


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


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

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



Цитата(boostcoder @  17.12.2010,  22:28 Найти цитируемый пост)
суть не в том как это реализовано. а в том, что принцип - подписка на команды.
подписка на что ? на мигранта или на импульс ?

Добавлено @ 23:35
Цитата(boostcoder @  17.12.2010,  22:28 Найти цитируемый пост)
понял. какие предложения?

не терять тип до тех пор, пока пользователь нужно (в разумных рамках)... 

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

Добавлено @ 23:37
сейчас, вот не знаю что лучше.. сделать шаблонным конструктор или лучше статическую креаторную функцию ?
предпочтения эстетичности переваливают на конструктора..а логичности на спокойствия - на стат. функцию.. 

вообщем были ли подводные камни с шаблоными конструкторами или все в пределах логичности  ?

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


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


pattern`щик
****


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

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



Цитата(mes @  17.12.2010,  23:32 Найти цитируемый пост)
подписка на что ? на мигранта или на импульс ?

это нужно продумать.

Цитата(mes @  17.12.2010,  23:32 Найти цитируемый пост)
не терять тип до тех пор, пока пользователь нужно (в разумных рамках)... 

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

идею понял. но не более..

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

вообщем были ли подводные камни с шаблоными конструкторами или все в пределах логичности  ?

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


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


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

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



Код

 template <typename A1>
  impulse (A1 const& a1 )
   : args_fused ( fusion::make_list(a1) )
  {
  }
  template <typename A1, typename A2>
  impulse (A1 const& a1, A2 const& a2 )
   : args_fused ( fusion::make_list(a1, a2) )
  {
  }
  template <typename A1, typename A2, typename A3>
  impulse (A1 const& a1, A2 const& a2, A3 const& a3 )
   : args_fused ( fusion::make_list(a1, a2, a3) ) 
  {
  }


Добавлено @ 23:55
Цитата(boostcoder @  17.12.2010,  22:46 Найти цитируемый пост)
идею понял. но не более..

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



Это сообщение отредактировал(а) mes - 18.12.2010, 00:08


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


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


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

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



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

#include <iostream>
#include <dy/impulse.hpp>

struct impulse_logger
{ 
   template <typename Im >
   void operator << (Im const& im) { std::cout << "Impulse " << Im::id;  }
};


int main () {
  typedef dy::impulse<4, void(std::string, std::string)> imp;
  
  impulse_logger _out;
  
  _out << imp("hello", "world");
   
}

http://liveworkspace.org/code/464466e862bd...17a2b6947e66ce4 

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


Это сообщение отредактировал(а) mes - 18.12.2010, 00:06


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


pattern`щик
****


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

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



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

расставьте плиз знаки препинания smile  а то я два подходящих смысла вижу, и не могу понять какой Вы имеете ввиду.
PM WWW   Вверх
mes
Дата 18.12.2010, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  17.12.2010,  23:06 Найти цитируемый пост)
расставьте плиз знаки препинания 

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

Добавлено @ 00:09
а увидел по-моему что смущает.    
Цитата(mes @  17.12.2010,  23:08 Найти цитируемый пост)
быть определеным пользователем..

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

Это сообщение отредактировал(а) mes - 18.12.2010, 00:11


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


pattern`щик
****


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

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



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

гуд smile 
Цитата(mes @  18.12.2010,  00:08 Найти цитируемый пост)
класс, у которого будет возбуждаться импульс, должен иметь возможность быть определеным пользователем..

понял.

Цитата(mes @  18.12.2010,  00:08 Найти цитируемый пост)
а увидел по-моему что смущает.    

ага.

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


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


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

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



Цитата(mes @  17.12.2010,  23:05 Найти цитируемый пост)
вместо него (или вместе с ним ) можно поставить сендера в сеть или что то другое и не одно.. 


Код

struct impulse_logger
{ 
   template <typename Im >
   Im const& operator <<= (Im const& im) { std::cout << "Impulse " << Im::id << " .... ";  return im; }
};
...

 _out1 <<= _out2 <<= _out3 <<= imp("hello", "world");


Добавлено через 47 секунд
ну синтаксис операторов нужно будет подобрать потщательней.. 



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


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

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