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

Поиск:

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


pattern`щик
****


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

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



Цитата(mes @  29.10.2010,  23:13 Найти цитируемый пост)
его я поменял, а вот в invoker::dispatch забыл :(

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


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


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

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



Цитата(boostcoder @  29.10.2010,  22:03 Найти цитируемый пост)
что в них изменить?

я видел только outgo (real_sender), a incoma не было ..

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

спасибо,

терь хоть рассмотреть можно.. не крутя километры.. 

http://liveworkspace.org/code/faebea2999c7...b75f45f1100a42b

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


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


pattern`щик
****


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

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



Цитата(mes @  29.10.2010,  23:20 Найти цитируемый пост)
incoma не было .. 

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

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

так сойдет?


Добавлено через 1 минуту и 16 секунд
Цитата(mes @  29.10.2010,  23:20 Найти цитируемый пост)
терь хоть рассмотреть можно.. не крутя километры.. 

http://liveworkspace.org/code/50f5f88f2995...94083c87ae5c44d 

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


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


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

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



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


Цитата(mes @  29.10.2010,  20:01 Найти цитируемый пост)
1.dispatch принимает рпц_пакет, а с сервера приходит чистый буфер..
заставлять делегата расшифровывать не хорошо.. так как могут потрбоваться знания которыми обладает только клиент..
2. диспатчеризироваться объект может более чем одному ресиверу (например на выбор) и только клиент знает кому и когда.. 


т.е. желательно связывать через делегата от клиента..

Добавлено через 1 минуту и 21 секунду
Цитата(boostcoder @  29.10.2010,  22:23 Найти цитируемый пост)
значит это мне к изучению. 

ну можно так сказать.. smile и тот кого Вы перенесли (дистрибьютор) тоже  smile 


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


pattern`щик
****


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

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



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

http://liveworkspace.org/code/faebea2999c7...b75f45f1100a42b

скажите, а в этом коде, можно лямбду заменить на функции/методы? а то, честно говоря, я теряюсь из-за невозможности ясно понять кто вызывается smile 
PM WWW   Вверх
mes
Дата 29.10.2010, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



т важные моменты , на которые хотел бы обратить внимание, могу вкратце прокомментировать..

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

struct client {

    auth_ctrl auth;
    ping_ctrl ping;

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

       receiver.set_handler (&auth_ctrl::on_welcome);
       receiver.set_handler (&ping_ctrl::on_signal);       
       receiver.set_handler (&ping_ctrl::on_echo); 
 
для выполнения метода хранится не инстанс соответсвующего методу типа, а только входная точка (т.е. наш клиент)

Добавлено через 39 секунд
Цитата(boostcoder @  29.10.2010,  22:32 Найти цитируемый пост)
скажите, а в этом коде, можно лямбду заменить на функции/методы? а то, честно говоря, я теряюсь из-за невозможности ясно понять кто вызывается 

лямбды на сервере.. их не смотрите.. смотрите только клиента.. 



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


pattern`щик
****


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

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



Цитата(mes @  29.10.2010,  23:28 Найти цитируемый пост)
1.dispatch принимает рпц_пакет, а с сервера приходит чистый буфер..
заставлять делегата расшифровывать не хорошо.. так как могут потрбоваться знания которыми обладает только клиент..

с этим понял. вынесу в отдельные функции.


Цитата(mes @  29.10.2010,  23:28 Найти цитируемый пост)
2. диспатчеризироваться объект может более чем одному ресиверу (например на выбор) и только клиент знает кому и когда.. 
т.е. желательно связывать через делегата от клиента..

а это нет smile

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

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


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


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

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



Цитата(boostcoder @  29.10.2010,  22:47 Найти цитируемый пост)
а это нет 

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

Добавлено @ 23:56
что то мне кажется, то что Вы сейчас делаете, надо называть не нет клиентом, а rpc_tcp_connection
и такие соединения подойдут для сервера..которые будут создаваться по приказу акцептора..

Добавлено @ 00:01
и еще добавьте флаг в  метод send
Код

void send (rpc_paket const& pack, bool extrn = true )
{ if (extrn) sender.send(pack);
  else       dispatch(pack); //  { reciever.dispatch(pack); }
}

 

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


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


pattern`щик
****


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

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



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

тут немного иначе все..

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

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

это то, что мне предстоит реализовать.


Добавлено через 38 секунд
Цитата(mes @  29.10.2010,  23:50 Найти цитируемый пост)
и еще добавьте флаг в  метод send

это хорошая идея smile

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

Добавлено через 3 минуты и 35 секунд
Цитата(boostcoder @  30.10.2010,  00:10 Найти цитируемый пост)
так же, должны поддерживаться создание обработчиков с передачей в их конструктор данных со стороны клиента.

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


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


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

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



Цитата(boostcoder @  29.10.2010,  23:10 Найти цитируемый пост)
тут немного иначе все..

и как нижесказанное под этой цитатой противоречит вышесказанному ?




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


pattern`щик
****


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

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



Цитата(mes @  30.10.2010,  00:14 Найти цитируемый пост)
и как нижесказанное под этой цитатой противоречит вышесказанному ?

не противоречит. просто аксептор и объект сессии уже есть.

Добавлено через 47 секунд
Цитата(mes @  29.10.2010,  23:50 Найти цитируемый пост)
которые будут создаваться по приказу акцептора..

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


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


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

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



Цитата(boostcoder @  29.10.2010,  23:10 Найти цитируемый пост)
т.е. нужна возможность, при запросе от клиента на создание объекта, так же передать и аргументы в конструктор. 

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



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


pattern`щик
****


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

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



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

ага smile
пошел изучать код..
PM WWW   Вверх
boostcoder
Дата 30.10.2010, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



Цитата(mes @  29.10.2010,  23:50 Найти цитируемый пост)
void send (rpc_paket const& pack, bool extrn = true )
{ if (extrn) sender.send(pack);
  else       dispatch(pack); //  { reciever.dispatch(pack); }
}

не могу понять, какого класса этот метод? того, который мне предстоит написать?

Добавлено через 1 минуту и 45 секунд
еще не знаю как расшифровать sttc
с cts и stc понятно.
PM WWW   Вверх
mes
Дата 30.10.2010, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  29.10.2010,  23:43 Найти цитируемый пост)
не могу понять, какого класса этот метод? того, который мне предстоит написать?

сейчас он называется net_client..



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


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

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