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

Поиск:

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


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


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

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



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

не неизменной, а опорной.. все кроме маин.. 



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


pattern`щик
****


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

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



ок. закинул его в отдельный файл.
далее используем так:
Код

// http://liveworkspace.org/code/aa539e62ca1c9439d0017fe1a180288b
#include <rpc-rev1.hpp>

int main() {
   /** client */
   rpc_sender client_sender;
   rpc_receiver client_receiver;

   client_receiver.set_handler<result>(
      [](const result& r) {
         std::cout
         << "from server:" << std::endl
         << "   msg : " << r.message << std::endl
         << "   code: " << r.code << std::endl;
      }
   );

   /** server */
   rpc_sender server_sender;
   rpc_receiver server_receiver;
   server_receiver.set_handler<query>(
      [&server_sender](const query& q) {
         std::cout
         << "from client:" << std::endl
         << "   msg : " << q.message << std::endl
         << "   code: " << q.code << std::endl;
         server_sender.send(result("Ok", 1));
      }
   );
   /**  */
   client_sender.raw_send = std::bind(&rpc_receiver::dispatch, &server_receiver, std::placeholders::_1);
   server_sender.raw_send = std::bind(&rpc_receiver::dispatch, &client_receiver, std::placeholders::_1);
   /**  */
   client_sender.send(query("query", 3));
}

http://liveworkspace.org/code/93eb6d4eba45...fdc9ede71f34864

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


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


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

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



Цитата(boostcoder @  29.10.2010,  12:07 Найти цитируемый пост)
ок. закинул его в отдельный файл.

 smile 

терь в какую строну двигаемся ? готов выслушать пожелания smile



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


pattern`щик
****


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

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



smile 
я думаю что пора реализовать возможность создания обработчиков по запросу сторон. нет?

Добавлено через 4 минуты и 18 секунд
еще момент... пишу..

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


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


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

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



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

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



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


pattern`щик
****


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

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



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

CLASS_BEGIN(test)
   DECLARE_METHOD(int, method1, const std::string&, int, const char*)
   DECLARE_METHOD(void, method2, const std::std::vector<int>&, int)
CLASS_END()

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

DECLARE_HANDLER_CLASS(
   // abstract class name
   registration_api,
   // check if user with this nick and email already exists
   ((user_exists,
      ((query,
        ((std::string, nick))
        ((std::string, email))
      ))
      ((result,
         ((int, code))
         ((std::string, message))
      ))
   ))
   // registration query
   ((registration,
      ((query,
         ((std::string, nick))
         ((std::string, email))
      ))
      ((result,
         ((std::string, message))
         ((int, code))
      ))
   ))
)



исходя из этого, предполагаю использовать это так:
Код

client client(...);
remote_object<test> object = client.create<test>();
object->method1(...);
object->method2(...);


как вам такой вариант?
какие мысли по этому поводу?

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

Добавлено через 35 секунд
Цитата(mes @ 29.10.2010,  13:19)
Цитата(boostcoder @  29.10.2010,  12:12 Найти цитируемый пост)
я думаю что пора реализовать возможность создания обработчиков по запросу сторон. нет?

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

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


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


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

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



Цитата(boostcoder @  29.10.2010,  12:27 Найти цитируемый пост)
я переделываю кодогенератор так, чтоб записывать обработчики следующим образом:

ну вот опять... рано силы тратите.. 



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


pattern`щик
****


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

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



Цитата(mes @ 29.10.2010,  13:29)
Цитата(boostcoder @  29.10.2010,  12:27 Найти цитируемый пост)
я переделываю кодогенератор так, чтоб записывать обработчики следующим образом:

ну вот опять... рано силы тратите..

ок.
на потом.

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


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


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

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



Цитата(boostcoder @  29.10.2010,  12:27 Найти цитируемый пост)
реализовать сетевое взаимодействие? 

ага.. чтоб на примере посмотреть, что у нас получилось..

после попробуем реализовать обработчики удобным способом 

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

Добавлено через 56 секунд
я тут пока с mpl разбираюсь..  интересная штуковина .. и нам как раз будет кстати smile



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


pattern`щик
****


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

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



хорошо. пишу.

Добавлено через 1 минуту и 57 секунд
Цитата(mes @  29.10.2010,  13:31 Найти цитируемый пост)
я тут пока с mpl разбираюсь..  интересная штуковина .. и нам как раз будет кстати

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


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


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

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



для начала напишите в таком прообразе :
Код

struct client
{
     template <class T>
     void send (T& o) { sender.send(o); }
     template<class T>
     void set_handler.. 
     ...
     rpc_sender    sender;
     rpc_receiver   receiver;
};




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


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


pattern`щик
****


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

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



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


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


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

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



Цитата(boostcoder @  29.10.2010,  12:33 Найти цитируемый пост)
boost.fusion взгляните. 

если я правильно представляю фусион, то он не подходит, так как
мне нужен не контейнер разнотипных данных, а контейнер разных типов и операции над ним smile

Добавлено через 1 минуту и 59 секунд
Цитата

Fusion is a library for working with heterogenous collections of data, commonly referred to as tuples

посмотрел, точно для текущих планов  не то.. 



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


pattern`щик
****


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

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



Цитата(mes @  29.10.2010,  13:52 Найти цитируемый пост)
не контейнер разнотипных данных, а контейнер разных типов

не понял..

Добавлено через 38 секунд
вообще-то во fusion несколько типов контейнеров.
PM WWW   Вверх
mes
Дата 29.10.2010, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  29.10.2010,  13:12 Найти цитируемый пост)
вообще-то во fusion несколько типов контейнеров. 

в любом случае их цель хранить данные..  а мне не нужны сейчас данные.. мне нужны пустые типы. 
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.1040 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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