Berkus
а, ну все равно
Aleksei
Если подойти с точки с зрения x-y проблемы, то смысл - сделать async_read с таймаутом
Aleksei
Клиенты иногда отключаются неправильно, и сокет висит в fin ack
Arseny
Почему убьет? Там contention никакого же нету.
Я не знаю как strand внутри устроен, но и теоретически его можно без mutex ов реализовать.
Berkus
В смысле, все равно?
всё равно ловко использовать странды и структурировать стейт-машину соединения правильно - см. beast для примера
Dmitry
Хорошая функция?
https://github.com/grishka/libtgvoip/blob/public/os/linux/AudioInputALSA.cpp#L72-L74
Berkus
Aleksei
Berkus
а вот альса хуевая, зачем я туда опять посмотрел...
Aleksei
Aleksei
Попробую почитать, спасибо.
Aleksei
https://github.com/boostorg/beast/blob/develop/include/boost/beast/http/impl/read.ipp#L116
Vsevolod
goto в луп - это стильно
Berkus
который никому не нужен всё равно
Dmitry
https://github.com/telegramdesktop/tdesktop/issues/3412#issuecomment-342012983
Dmitry
мне кажется никогда звонки в телеге не сделают нормально
Vsevolod
могильный телеграм нормально звонит, вроде
Berkus
Aleksei
Посмотрел в пример с таймаутом для биста
http://www.boost.org/doc/libs/develop/libs/beast/example/advanced/server/advanced_server.cpp
Примерно как у меня сделано. В on_write проверяется
if(ec == boost::asio::error::operation_aborted)
return;
А потом сразу do_read, в котором async_read
Так вот мне приходит колбек on_write без ошибок, но в другом потоке таймер сработал. У них только отличается проверка срабатывания из-за того, что они дедлайн двигают (мне не актуально, я один раз устанавливаю перед ридом).
Aleksei
Похоже, просто перед async_read вставлю проверку socket.is_open()
Aleksei
костыль, конечно...
Aleksei
Нет, нафиг такое. Лучше мьютексом закрою дисконект и рид
Aleksei
🐙 Antony
типа через sysctl?
Через setsockopt. Вот тут есть пример кода: https://stackoverflow.com/questions/20188718/configuring-tcp-keep-alive-with-boostasio
Aleksei
Berkus
Vitaliy
/report
Berkus
а чочоч
Berkus
Vitaliy
чего вам, черти
Тут чуваку не нравится что мы за него зачет сдать не можем)
Dr. Friedrich
Кажись он вышел чтоли?
Berkus
Aleksei
Berkus
а мне показывает в чяти )
Berkus
престон сделяль
Vitaliy
нет, он тут
Berkus
Aleksei
Berkus
> Останавливаю сокет, чтобы все хендлеры вызвались
Ж - логика
Aleksei
Но вариант с платформозависимым ресив таймаутом мне пока больше нравится...
Aleksei
Constantine
@antoshkka а чем (хотя бы примерно) обусловлена возможность неявно привести const&& к const& в C++ ?
Egor
Я слышал, что идея такая: если мы передаём неконстантную ссылку в функцию, то это как бы возвращаемое значение (иначе можно передать const&). А если передать временное значение, то мы его как бы игнорим. Что наверняка ошибка.
Constantine
Egor
mutable не поможет? Я не очень понял, в чём беда, но вдруг
Egor
И, кстати, что такое «временный мьютекс» и что он защищает?
Dr. Friedrich
Чуваки, ежели кто хочет мне помочь с разработкой conan-плагина для visual fuckin' studio, тогда го сюда: https://github.com/ForNeVeR/conan-vs-extension/projects/2
Constantine
Constantine
Разрушать вижак?
Constantine
Constantine
ты предлагаешь поработать над твоим проектом
Constantine
но на вопрос что он делает отвечаешь RTFM
Dr. Friedrich
Проект не мой!
Dr. Friedrich
Это бинкрафтеров, а я просто помочь взялся.
Constantine
это даже не твой проект
Constantine
а, это package manager
Dr. Friedrich
Ну, коль там есть мои контрибьюшены, то, выходит, и мой тоже. Но не только мой. Общественный, в общем. Опенсурс же!
Constantine
у меня windows :)
Dr. Friedrich
Это и есть проект по интеграции package manager в IDE для Windows.
Constantine
Ну да
Constantine
Но я пользуюсь windows
Constantine
Мне не нужны пакетные менеджеры
Dr. Friedrich
Мне непонятно, чо он говорит.