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

Поиск:

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


pattern`щик
****


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

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



Цитата(mes @  8.1.2011,  17:26 Найти цитируемый пост)
отсюда :
http://code.google.com/p/discoly/source/br...%2Finclude%2Fdy

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

Цитата(mes @  8.1.2011,  17:41 Найти цитируемый пост)
самый простой способ просто поправить саму шаблонную функцию.. 
struct migrant_to_impulse {
   template<Im>
   static Im convert(const migrant& m) {
      return *static_cast<const Im*>(m.data);
   }
};

помогло smile

Добавлено через 1 минуту и 25 секунд
закоммитил.
тест: http://liveworkspace.org/code/1ac694a564e2...9162e6684ec4a4a
PM WWW   Вверх
mes
Дата 8.1.2011, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  8.1.2011,  17:05 Найти цитируемый пост)
у меня открывается. и вообще у меня нет возможности запретить доступ к какому-либо файлу. так что, даже не знаю что сказать..

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


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


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


pattern`щик
****


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

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



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

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

struct server {
   template<
      typename Ims, // список импульсов
      typename T // тип класса
   >
   void bind(T* class_) {
   }
};

// использовать так:
typedef boost::mpl::vector<...> ims;
struct implementation {};

...

server serv;
implementation impl;
serv.bind<ims>(&impl);

первый недостаток - необходимость знать имя списка импульсов.
в этой теме: http://forum.vingrad.ru/forum/topic-319669.html я хотел решить вопрос с глобальным mpl::map. но похоже что никак.

...и еще куча разбросанных мыслей.

у Вас, вообще, какое видение регистрации и диспетчеризации?
как Вы себе это представляете?
PM WWW   Вверх
mes
Дата 10.1.2011, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Код

typedef mpl::list < im1, im2, im3 > cts;
typedef mpl::list < im4, im5, im6 > stc;

struct service : dy::sender<cts> 
{
   service (connection& conn)  : dy::sender<cts> (_conn)
   {
        _conn += dy::make_responder(this, _table) ;
   }

  protected:
    void on_im4 () {}
    void on_im5 () {}
    void on_im6 () {}

    struct table : dy::table<service, stc>
    {
       table () {
          this->on<im4> = &service::on_im4;
          this->on<im5> = &service::on_im5;
          this->on<im6> = &service::on_im6;
      }
    } static _table;
};

service::table service::_table;

//...

dy::tcp_connection _conn;

service _service(_conn);

_conn.connect(_end_point);

_service.send(im1());
_service.send(im2());
_service.send(im3());



Это сообщение отредактировал(а) mes - 10.1.2011, 16:18


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


pattern`щик
****


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

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



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


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


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

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



Цитата("svn::discoly")

template <typename F>
struct args_normalized<boost::function<F> > {
    typedef typename seq_remove_const_ref<typename function_types::parameter_types<F>::type>::type type;
};

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

П.С.
невзначяй напоминаю
Цитата(boostcoder @  27.12.2010,  13:24 Найти цитируемый пост)
Цитата

желательно начать с задач 1,2,6  -  typeext &&  seriаlization 


ок 

smile 



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


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


pattern`щик
****


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

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



Цитата(mes @  17.1.2011,  21:23 Найти цитируемый пост)
args`ы вытягиваются из _классической_ функции... что она на самом деле  (переменная функция, или сигнал иль что другое..) нам не важно..

не в этом суть..

Цитата(mes @  17.1.2011,  21:23 Найти цитируемый пост)
П.С.
невзначяй напоминаю

я помню. этим и занимаюсь.
переписал с нуля. вроде работает smile 
на днях создам еще одно ответвление.
пока что шлифую код.
PM WWW   Вверх
mes
Дата 18.1.2011, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(boostcoder @  17.1.2011,  21:40 Найти цитируемый пост)
не в этом суть..

 smile 


Цитата(boostcoder @  17.1.2011,  21:40 Найти цитируемый пост)
я помню. этим и занимаюсь.
переписал с нуля. вроде работает  
на днях создам еще одно ответвление.
пока что шлифую код. 

ну тогда еще придется подождать smile


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


pattern`щик
****


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

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



Цитата(mes @  17.1.2011,  21:23 Найти цитируемый пост)
args`ы вытягиваются из _классической_ функции... что она на самом деле  (переменная функция, или сигнал иль что другое..) нам не важно..

а Вы представьте, что юзер затайпдефил необходимые сигнатуры как boost::function<> или boost::signal<>, почему бы ему не использовать их?

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


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


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

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



Цитата(boostcoder @  18.1.2011,  12:27 Найти цитируемый пост)
а Вы представьте, что юзер затайпдефил необходимые сигнатуры как boost::function<> или boost::signal<>, почему бы ему не использовать их?

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

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




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


pattern`щик
****


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

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



Цитата(mes @  18.1.2011,  16:59 Найти цитируемый пост)
Вы о каких это тайпдефах сейчас говорите ?

вот ради чего:
Код

/** existing user code */
typedef boost::function<void()> func_type_any;
typedef boost::function<void(int)> func_type_some_any;

/** registration of user implementation */
typedef dy::impulse<5, func_type_any> im1;
typedef dy::impulse<6, func_type_some_any> im2;

...



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


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


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

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



Цитата(boostcoder @  18.1.2011,  16:07 Найти цитируемый пост)
вот ради чего:

уточнение : т.е ради этого, Вы жертвуете возможностью объявлять так :
Код

typedef dy::impulse<1, void()> im1;

?

Добавлено через 3 минуты и 12 секунд
ааа... сорри, глянул еще раз в код.. оказывается Вы добавили,
а не заменили.. из за зеленых блоков старые не увидел.. 



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


pattern`щик
****


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

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



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

client << impulse("login.user_exists", "nick", "email");


на данный момент, единственное что мне не нравится - отсутствие автоматической регистрации.

завтра, по идее, залью на SVN.

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


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


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

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



Цитата(boostcoder @  18.1.2011,  16:17 Найти цитируемый пост)
к примеру:

интересненько.. 

Цитата(boostcoder @  18.1.2011,  16:17 Найти цитируемый пост)
завтра, по идее, залью на SVN.

жду smile 




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


pattern`щик
****


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

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



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


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

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