Обновить библиотеку asio до версии 1.29.0.
Обновить библиотеку beast до версии 351 (boost-1.84.0).
Обновить библиотеку fmt до версии 9.1.0.
Добавить CMake для сборки примеров проектов.
Добавить поддержку mqtt, включая версии v3.1, v3.1.1 и v5.0.
Изменить триггерные потоки "_fire_init, _fire_start, _fire_stop" с основного потока на поток 0.
Изменить интерфейс функции "call" в rpc: если она вызывается в коммуникационном потоке, то теперь она вырождается в async_call, а возвращаемое значение становится пустым.
Заменить файл "asio2/base/selector.hpp" на "asio2/external/asio.hpp и asio2/external/beast.hpp", чтобы разделить заголовочные файлы asio и beast. Ранее "included tcp_lient.hpp" содержал и asio, и beast, но теперь "included tcp_lient.hpp" будет содержать только asio.
Заменить компонент последовательного порта с "scp" на "serial_port".
Оптимизировать функции "push_event, next_event", чтобы избежать многократного копирования session_ptr.
Модифицировать функции "post, dispatch" в post_cp.hpp, добавив "derive.selfptr()", чтобы гарантировать, что функция обратного вызова asio::post должна удерживать session_ptr.
Разделить исходную асинхронную функцию "send" на две функции: "send" и "async_send". Теперь "send" означает синхронную отправку, а "async_send" — асинхронную отправку (можно найти "send" в коде и заменить его на "async_send"). Теперь возвращаемым значением функции "send" является количество отправленных байтов данных (ранее bool), а возвращаемым значением "async_send" является void. Если синхронная функция "send" вызывается в коммуникационном потоке, она вырождается в асинхронную функцию "async_send";
Изменить поведение функции async_send с параметром обратного вызова: всякий раз, когда вызов функции async_send завершается неудачно, например, из-за исключения, вызывается обратный вызов. В предыдущих версиях обратный вызов вызывался только при сбое записи данных.
Изменить http::request и http::response в функции обратного вызова http на http::web_request и http::web_response, чтобы обеспечить совместимость с boost (можно найти http::request в коде и напрямую заменить его на http::web_request. То же самое относится к response. Для получения подробной информации см. пример кода http).
Удалить параметр "asio::error_code ec" во всех функциях обратного вызова, например: раньше это было bind_start([](asio::error_code ec){}); теперь это bind_start({}); Теперь необходимо использовать функцию asio2::get_last_error() для определения наличия ошибки; модифицированные интерфейсы включают: bind_start,bind_stop,bind_connect,bind_disconnect и async_call функций обратного вызова rpc.
Удалить параметры error_code в нескольких функциях, в основном это http_client::execute,ping::execute,http::make_request,http::make_response и т. д., теперь необходимо использовать asio2::get_last_error(), чтобы определить, произошла ли ошибка.
Удалить thread_local static error_code ec_ignore; в asio2/base/error.hpp.
Устранить ошибки компиляции под "Visual Studio 2017 - Windows XP (v141_xp)", заменив std::shared_mutex на макрос asio2_shared_mutex.
Исправить ошибку: после вызова server.stop(); в некоторых случаях сервер всё ещё принимает сеанс, и сеанс может нормально "получать и отправлять данные". Это приведёт к тому, что сервер никогда не завершит работу.
Исправить ошибку: в asio2/base/error.hpp : thread_local static error_code ec_last; В vs2017 и некоторых случаях это может привести к сбою перед функцией "main".
Исправлена ошибка: reconnect_timer будет недействителен при "client.start(...);client.stop();client.start(...)".
Исправлена ошибка: уведомление _fire_init() не всегда вызывается в потоке 0.
Исправлена ошибка: некорректный анализ имени файла и content_type в asio2/http/multipart.hpp.
Исправлена ошибка: asio2/util/ini.hpp, Когда имя исполняемого файла не содержит точки ".", автоматически созданное имя файла ini неверно.
Исправлена ошибка: при вызове "start" с некоторым исключением состояние будет "starting", это приведёт к тому, что "start" всегда будет терпеть неудачу.
Исправлена ошибка: это вызовет сбой, когда... Вызов «client.start» несколько раз, все «ssl client» и «websocket client» будут затронуты этой ошибкой, потому что многопоточность читает и записывает «ws_stream_».
Исправлена ошибка: ошибка кода при обходе «http_router's wildcard_routers_» вызывает сбой.
Исправлена ошибка: когда таймер останавливается сразу после запуска в потоке io_context, таймер не останавливается.
Исправлена ошибка: если пользователь вызвал «http::response.defer()» в обратном вызове recv, это может вызвать сбой, если сеанс отключился до того, как «defer» выполнился, поскольку «rep_» был уже уничтожен к этому времени.
Исправлена ошибка: если пользователь вызвал «http::response.defer()» в обратном вызове recv и у клиента нет опции «keep_alive», ответ не будет отправлен клиенту правильно.
Исправлена ошибка: если пользователь вызвал «http::response.defer()» в обратном вызове recv, переменная «req_» может быть прочитана и записана двумя потоками одновременно, что может привести к сбою.
Исправлена ошибка: может найти функцию обратного вызова, которая не соответствует идентификатору компонента rdc.
Исправлена ошибка: в некоторых случаях после client.stop() client.is_stopped() может быть ложным.
Решена проблема, из-за которой KCP сервер и клиент неправильно отправляли fin frame.
Решена проблема с неправильным управлением порядком байтов в заголовке данных рукопожатия KCP.
Исправлено: когда вызывается client.stop, и в это время async_send вызывается в другом потоке, async_send может вести себя неожиданно (например, обратный вызов async_send не вызывается).
Устранены проблемы с ненужным выделением памяти в распределителе, чтобы уменьшить количество выделений памяти. Теперь все таймеры не используют настраиваемый распределитель для выделения памяти, а используют asio для автоматического выделения памяти.
Множество других общих улучшений, исправлений кода и улучшений. См. записи коммитов между 2020-12-23 и 2023-12-30.
Некоторые ошибки исправлены. Версия 2.0:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )