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

Поиск:

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


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


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

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



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

Добавлено через 28 секунд
вы пока с сериализацией мучайтесь, а я пока про ресивер подумаю ))



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


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


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

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



и еще invoker нужно  занестить в ресивер.. 
и разгрузить вызов функции инвокера через внешнюю шаблонную функцию.. 




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


pattern`щик
****


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

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



Цитата(mes @  28.10.2010,  19:06 Найти цитируемый пост)
и еще invoker нужно  занестить в ресивер.. 
и разгрузить вызов функции инвокера через внешнюю шаблонную функцию.. 

эм.. поясните ;)
PM WWW   Вверх
mes
Дата 28.10.2010, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  28.10.2010,  18:16 Найти цитируемый пост)
 занестить

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

struct receiver { struct invoker; };



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


pattern`щик
****


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

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



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

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


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


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

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



Цитата(boostcoder @  28.10.2010,  18:16 Найти цитируемый пост)
и разгрузить вызов функции инвокера через внешнюю шаблонную функцию.

сделать две шаблонные функции
Код

packet to_paket(T const& );
T  from_packet (packet const&);

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

Код

struct sender { .. void send (const T& msg) { raw_send (to_packet<T>(msg)); };
struct invoker { ..void dispatch (..) { func( from_packet<T>(pack)); };


Добавлено через 1 минуту и 50 секунд
Цитата(mes @  28.10.2010,  18:43 Найти цитируемый пост)
to_paket

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


Это сообщение отредактировал(а) mes - 28.10.2010, 19:44


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


pattern`щик
****


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

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



ок. и это сделаю.

Добавлено через 12 минут и 55 секунд
это:
Цитата(mes @  28.10.2010,  19:37 Найти цитируемый пост)
struct receiver { struct invoker; };

и это:
Цитата(mes @  28.10.2010,  19:43 Найти цитируемый пост)
struct sender { .. void send (const T& msg) { raw_send (to_packet<T>(msg)); };
struct invoker { ..void dispatch (..) { func( from_packet<T>(pack)); };

так как делать?
PM WWW   Вверх
mes
Дата 28.10.2010, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  28.10.2010,  18:53 Найти цитируемый пост)
так как делать? 

вобще то одно другому не мешает..

покажите что у Вас сейчас 



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


pattern`щик
****


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

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



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


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


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

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



Цитата(boostcoder @  28.10.2010,  19:23 Найти цитируемый пост)
пока это: http://liveworkspace.org/code/65e326b96f50...75cf88e243f2c9b 

я думал вы хоть пакет уже добавили..  smile

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


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


pattern`щик
****


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

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



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

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


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


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

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



вот вам протипы пакета и пакетных функций..
Код

struct rpc_packet {
  size_t id;
};

template<class T>
rpc_packet rpc_pack (T const&)
{
      rpc_packet pack; 
      pack.id = T::meta_id;
      return pack;
}
template<class T>
T rpc_unpack (rpc_packet const&)
{
   return T();
}

вся сериализация должна быть в них ..

Добавлено @ 20:55
тогда сендер будет выглядить так :
Код

struct rpc_sender {
   std::function<void(rpc_packet const&)> raw_send;
   rpc_sender() {}

   template<typename T>
   void send(const T& o) {
        raw_send(rpc_pack<T>(o));
   }
};

и является теперь не зависимым от устройства рпц_библиотеки 

с остальным будет также.. 
smile

это я Вам опять немножко из будущего вытащил 
smile

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


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


pattern`щик
****


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

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



минутку...ща все будет..

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


Добавлено через 14 минут и 31 секунду
Цитата(mes @  28.10.2010,  20:52 Найти цитируемый пост)
struct rpc_packet {
  size_t id;
};

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


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


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

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



Цитата(boostcoder @  28.10.2010,  19:58 Найти цитируемый пост)
в ней же должны быть и хедер и бади. так? 

да, если нужны.. и как нужны )

Добавлено через 2 минуты и 18 секунд
вот я подправил остальное : http://liveworkspace.org/code/baa9b08e0051...92bdb22c903daba

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


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


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


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

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



после можно будет  написать класс rpc_receiver2, с инвокерами которые будут вызывать не function, а метод класса..
объект класса будет хранить ресивер..
P.S.старый ресивер не выкидывайте.. 







--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1224 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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