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

Поиск:

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


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


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

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



Цитата(boostcoder @  14.2.2011,  20:57 Найти цитируемый пост)
 репозитарий сбросил. все сохранил. ничего не пропало. не переживайте.

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

Добавлено через 2 минуты и 59 секунд
Цитата(boostcoder @  14.2.2011,  20:57 Найти цитируемый пост)
Цитата

tricks


это что? 

в простонародье "хаки" smile


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


Опытный
**


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

Репутация: 2
Всего: 23



не могу взять с репозитория исходники



Цитата(mes @  14.2.2011,  22:25 Найти цитируемый пост)
в простонародье "хаки"  
и почему сразу хаки? smile



--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
mes
Дата 15.2.2011, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(SenkraD @  15.2.2011,  10:52 Найти цитируемый пост)
и почему сразу хаки?

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


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


pattern`щик
****


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

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



Цитата(SenkraD @  15.2.2011,  11:52 Найти цитируемый пост)
не могу взять с репозитория исходники

на данный момент там пусто. терпение.


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

typedef mpl::vector<type1, type2, type3> implementations;

...

server<implementations> server(...);

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

struct type1 {
   type1(distributor& distr) {
      reg = distr.registry(this, "type1");
      reg->on(&type1::m1, "m1")
         ->on(&type1::m2, "m2");
   }
   void m1() {}
   int m2(int, double) {}
private:
   registry<type1>::shared_ptr reg;
};

вариант второй:
параметром сервера, передавать не mpl::vector<>, а mpl::map<>. где, ключ - тип реализации, а значение - mpl::vector<> пар [&type::m1, "m1"][&type1::m2, "m2"].
пример:
Код

struct type1 {
   type1() {
   }
   void m1() {}
   int m2(int, double) {}
};

...

typedef mpl::map<
   mpl::pair<
      type1,
      mpl::vector<
         mpl::pair<&type1::m1, "m1">,
         mpl::pair<&type1::m2, "m2">
      >
   >
> map;

...

server<map> server(...);


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


какие мысли?

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

struct type1 {
   void m1() {}
   void m2(int, double) {}
};

struct type2 {
   void m1() {}
   void m2(int, double) {}
};


...


void impl_builder(distributor& distr) {
   type1 t1;
   type2 t2;
   registry<type1>::shared_ptr reg1 = distr.registry(&t1, "type1");
   registry<type2>::shared_ptr reg2 = distr.registry(&t2, "type2");
   ...
   регистрация....
}


...


server server(..., &impl_builder);


гм.. ну вызовется этот хендлер. ну создадутся реализации...зарегаются. а дальше что? вышли из блока и все умерло smile 

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


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


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

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



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

сервер создает контролер сокета, которому передает ссылку на расшаренный контекст..

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

регистрировать кого и где ?

Цитата(boostcoder @  23.2.2011,  21:42 Найти цитируемый пост)
 type1, type2, type3 - реализации

реализации чего?

Цитата(boostcoder @  23.2.2011,  21:42 Найти цитируемый пост)
каждая реализация должна иметь навязанный конструктор. в конструктор, должна передаваться ссылка на дистрибьютор. и в конструкторе должна и происходить регистрация.

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

Добавлено через 4 минуты и 58 секунд
чем у Вас  идеологически является вызов ? функцией ? событием класса ? событием ?

Добавлено через 7 минут и 7 секунд
какое отношение соедеинения к дистрибьютрам ?
если объект получает сигналы от дистрибьютера, куда он посылает ответ ?



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


pattern`щик
****


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

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



Цитата(mes @  23.2.2011,  23:49 Найти цитируемый пост)
ервер создает контролер сокета, которому передает ссылку на расшаренный контекст..

поясните ;)

Цитата(mes @  23.2.2011,  23:49 Найти цитируемый пост)
регистрировать кого

методы реализаций(API)

Цитата(mes @  23.2.2011,  23:49 Найти цитируемый пост)
и где ?

это тоже вопрос.

Цитата(mes @  23.2.2011,  23:49 Найти цитируемый пост)
реализации чего?

реализации предоставляемых юзеру API

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

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

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


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


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

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



Цитата(boostcoder @  23.2.2011,  22:56 Найти цитируемый пост)
реализации предоставляемых юзеру API

что есть идеологически "предоставляемые юзеру API" и какое отношение они имееют к дисколи ?

Добавлено через 3 минуты и 12 секунд
Цитата(boostcoder @  23.2.2011,  22:56 Найти цитируемый пост)
, есть идея использовать один дистрибьютор для всех клиентов, т.к. набор реализаций(API) предоставляемых юзеру,

ок, значит дистрибьютер это синглетон, хранящий отношения имен к объектам..
но где соотношение соединения к контексту?

Добавлено через 4 минуты и 10 секунд
Цитата(boostcoder @  23.2.2011,  22:56 Найти цитируемый пост)
один дистрибьютор

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

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


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


pattern`щик
****


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

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



Цитата(mes @  23.2.2011,  23:49 Найти цитируемый пост)
чем у Вас  идеологически является вызов ?

что конкретно имеется ввиду?

Цитата(mes @  23.2.2011,  23:49 Найти цитируемый пост)
какое отношение соедеинения к дистрибьютрам ?

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

Цитата(mes @  23.2.2011,  23:49 Найти цитируемый пост)
если объект получает сигналы от дистрибьютера, куда он посылает ответ ?

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


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


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

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



Цитата(boostcoder @  23.2.2011,  22:56 Найти цитируемый пост)
сервер создает контролер сокета, которому передает ссылку на расшаренный контекст..
поясните ;)

сам сервер кроме акцептации, больше ничего не делает
на каждый акцептируемый сокет, создается контролер (user_context?), который уже слушает сокет и реагирует на него..
чтоб контроллеры могли взаимодействовать между собой, должен быть центральный объект/база даных (session_context?), который определяет некий мирок для user_context`ов..



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


pattern`щик
****


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

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



Цитата(mes @  23.2.2011,  23:58 Найти цитируемый пост)
что есть идеологически "предоставляемые юзеру API" и какое отношение они имееют к дисколи ?

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

Цитата(mes @  23.2.2011,  23:58 Найти цитируемый пост)
но где соотношение соединения к контексту?

тоже не понял...

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

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

Добавлено через 1 минуту и 51 секунду
Цитата(mes @  24.2.2011,  00:12 Найти цитируемый пост)
на каждый акцептируемый сокет, создается контролер (user_context?), который уже слушает сокет и реагирует на него..

да.

Цитата(mes @  24.2.2011,  00:12 Найти цитируемый пост)
чтоб контроллеры могли взаимодействовать между собой, должен быть центральный объект/база даных (session_context?), который определяет некий мирок для user_context`ов..

да.
но сейчас вопрос не в этом.
забудьте пока об этом.

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


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


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

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



Цитата(boostcoder @  23.2.2011,  23:03 Найти цитируемый пост)
что конкретно имеется ввиду?

грубо:
 функция - одному имени соответсвует только один обрабоотчик..
 событие - одному имени соответствует вектор обработчиков..
 событие класса - одному имени соответствует иерархия векторов обработчиков..



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


pattern`щик
****


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

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



Цитата(mes @  24.2.2011,  00:16 Найти цитируемый пост)
функция - одному имени соответсвует только один обрабоотчик..

да.

Цитата(mes @  24.2.2011,  00:16 Найти цитируемый пост)
событие - одному имени соответствует вектор обработчиков..

в данный момент такого нет.

Цитата(mes @  24.2.2011,  00:16 Найти цитируемый пост)
событие класса - одному имени соответствует иерархия векторов обработчиков..

этого тоже нет.

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


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


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

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



Цитата(boostcoder @  23.2.2011,  23:13 Найти цитируемый пост)
забудьте пока об этом.

хорошо, давайте вообще забудем про сервер.. он нам вообще не нужен.. 

есть два удаленных  объекта, нам надо наладить между ними взаимодействие ? так ?

Добавлено через 2 минуты и 21 секунду
Цитата(boostcoder @  23.2.2011,  23:18 Найти цитируемый пост)
Цитата

функция - одному имени соответсвует только один обрабоотчик..

да.

я, так понимаю, Вы решили ограничить дисколи только лицевым общением между клиент-сервером ?


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


pattern`щик
****


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

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



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

struct type1 {
   void m1() {}
   void m2(int, double) {}
};
struct type2 {
   void m1() {}
   void m2(int, double) {}
};

struct implementation {
   implementation(distributor& distr)
      :t1(),
      t2()
   {
      reg1 = distr.registry(&t1, "type1");
      reg2 = distr.registry(&t2, "type2");

      reg1->on(&type1::m1, "m1"); // "type1.m1"
      reg1->on(&type1::m2, "m2"); // "type1.m2"

      reg2->on(&type2::m1, "m1"); // "type2.m1"
      reg2->on(&type2::m2, "m2"); // "type2.m2"
   }

private:
   type1 t1;
   type2 t2;
   registry<type1>::shared_ptr reg1;
   registry<type2>::shared_ptr reg2;
};

...

server<implementation> server(...);

сервер, клиенту предоставляет методы "type1.m1", "type1.m2", "type2.m1", "type2.m2"

но тут тоже проблема: в конструктор, к примеру, type1(в type2 не надо) нужно передать объект для работы с БД, а у нас конструктор implementation навязан. как быть?

Добавлено @ 00:30
Цитата(mes @  24.2.2011,  00:22 Найти цитируемый пост)
есть два удаленных  объекта, нам надо наладить между ними взаимодействие ?

Вы меня окончательно запутали smile 


Цитата(mes @  24.2.2011,  00:22 Найти цитируемый пост)
я, так понимаю, Вы решили ограничить дисколи только лицевым общением между клиент-сервером ?

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

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

Добавлено @ 00:33
Цитата(boostcoder @  24.2.2011,  00:25 Найти цитируемый пост)
к примеру, type1(в type2 не надо) нужно передать объект для работы с БД, а у нас конструктор implementation навязан. как быть?

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

Добавлено @ 00:35
Цитата(boostcoder @  24.2.2011,  00:25 Найти цитируемый пост)
четвертый вариант

вроде это самый простой способ.
а дополнительные аргументы/объекты получать из синглтона?

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


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


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

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



Цитата(boostcoder @  23.2.2011,  23:25 Найти цитируемый пост)
по идее, тут нужен какой-то паттерн строитель. или гибрид. но не могу понять какой.

прежде всего надо понять идеологию, которую Вы хотите записать... дальше все будет проще..
smile

Добавлено @ 00:40
Цитата(boostcoder @  23.2.2011,  23:25 Найти цитируемый пост)
будут создаваться и регистрироваться реализации.

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

Добавлено @ 00:43
Цитата(boostcoder @  23.2.2011,  23:25 Найти цитируемый пост)
аргументы/объекты получать из синглтона? 

бррр.. и о каких дополнительных параметрах идет речь ?! 
и вообще что это за привычка связывать руки ?  может оставить все таки создание на откуп пользователя ?
кому как не ему лучше знать что делать..

Добавлено через 6 минут и 57 секунд
Цитата(boostcoder @  23.2.2011,  23:25 Найти цитируемый пост)
Вы меня окончательно запутали 

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


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


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


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

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