Size: a a a

2020 June 17

CD

Constantine Drozdov in pro.cxx
        struct detachable_post_event_control_block_interface
       {
            virtual void invoke() = 0;
            virtual void dismiss() = 0;
            virtual ~detachable_post_event_control_block_interface() = default;
       };
источник

CD

Constantine Drozdov in pro.cxx
вот так должно быть
источник

CD

Constantine Drozdov in pro.cxx
в общем, там эта штука полезет примерно в корневой интерфейс контроллера событий главного потока
источник

CD

Constantine Drozdov in pro.cxx
потому что заворачивать лямбду должен будет уже он
источник

CD

Constantine Drozdov in pro.cxx
сейчас там guard(once_callable_function<void()>)
источник

DS

Dmitry Sokolov in pro.cxx
Очередь интрузивная это значит есть basic_message, который intrusive list_member + void(). Вот этот самый handler никогда не оригинальный, потому что я ещё чутка упоролся и оно работает и с unique и с intrusive ptr. Он враппер типа invoke or kill yourself.
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Очередь интрузивная это значит есть basic_message, который intrusive list_member + void(). Вот этот самый handler никогда не оригинальный, потому что я ещё чутка упоролся и оно работает и с unique и с intrusive ptr. Он враппер типа invoke or kill yourself.
К черту подробности, можешь хотя бы примерно расписать сущность начиная от deque<???>
источник

DS

Dmitry Sokolov in pro.cxx
Ну и всякие post, типа
post(ptr& m, H& h) => h.on_msg(m)
schedule(F) => F()
источник

CD

Constantine Drozdov in pro.cxx
желательно так же указывать шаблонные параметры в <> :)
источник

CD

Constantine Drozdov in pro.cxx
каким-то образом должен работать post([BIND_THIS] () {/**/} ) и описание должно быть интерфейсным из-за необходимости DI
источник

DS

Dmitry Sokolov in pro.cxx
Изначальная идея была не копировать/реаллокировать ничего если данные заранее наследовали basic_message.
источник

DS

Dmitry Sokolov in pro.cxx
Значит у них в базе есть function, в который и записываем инфу как развернуть basic_message взад и куда то присунуть.
источник

DS

Dmitry Sokolov in pro.cxx
Например если это unique ptr в post, сделать release и завернуть обратно в unique ptr для callback.
источник

DS

Dmitry Sokolov in pro.cxx
Ну и для generic schedule будет post make_unique<fn_message> какой то
источник

CD

Constantine Drozdov in pro.cxx
Constantine Drozdov
        struct detachable_post_event_control_block_interface
       {
            virtual void invoke() = 0;
            virtual void dismiss() = 0;
            virtual ~detachable_post_event_control_block_interface() = default;
       };
Ну у меня получается, что если сделать примерно такую фигню и прямо
virtual void post(shared_ptr<detachable_post_event_control_block_interface>)
источник

CD

Constantine Drozdov in pro.cxx
А враппер вынести на уровень main_thread_events_controller_interface, то вроде бы взлетит
источник

CD

Constantine Drozdov in pro.cxx
dismiss() noexcept, наверное
источник

DS

Dmitry Sokolov in pro.cxx
Constantine Drozdov
Ну у меня получается, что если сделать примерно такую фигню и прямо
virtual void post(shared_ptr<detachable_post_event_control_block_interface>)
Ну или вообще безотносительно очередей и тех кто их разгребать будет сделать make_dismissable(f) => f, dismiss_button
источник

CD

Constantine Drozdov in pro.cxx
Dmitry Sokolov
Ну или вообще безотносительно очередей и тех кто их разгребать будет сделать make_dismissable(f) => f, dismiss_button
dismiss_button называется guard :)
источник

CD

Constantine Drozdov in pro.cxx
тут очень специфическая структура, что dismiss != dtor в интерфейсе
источник