some fixes #198

Merged
peri4 merged 1 commits from some_fixes into master 2026-03-18 11:08:49 +03:00
Owner
  • PIEthernet::listen
  • PIClientServer::Server::~Server
  • PISystemTime const sleep
  • ClientServer tests fast and stable
- PIEthernet::listen - PIClientServer::Server::~Server - PISystemTime const sleep - ClientServer tests fast and stable
andrey added 1 commit 2026-03-17 20:14:54 +03:00
PIEthernet::listen
PIClientServer::Server::~Server
PISystemTime const sleep
ClientServer tests fast and stable
andrey reviewed 2026-03-18 08:58:54 +03:00
@@ -77,3 +75,1 @@
c->destroy();
delete c;
}
closeAll();
Author
Owner

closeAll выполняет тоже самое но под мьютексом

closeAll выполняет тоже самое но под мьютексом
Owner

Экономия в 3 строки, но лишние мьютексы и нотифаер, там вроде какие-то особенности (особенно на Винде) при статическом деструкторе, поэтому тут минимум лишнего

Экономия в 3 строки, но лишние мьютексы и нотифаер, там вроде какие-то особенности (особенно на Винде) при статическом деструкторе, поэтому тут минимум лишнего
Owner

+ я не люблю менять что-то если нет прям нужды, работает хорошо, проверено

\+ я не люблю менять что-то если нет прям нужды, работает хорошо, проверено
Author
Owner

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

тут не про экономию, а про то что мьютекса не было. если бы работало хорошо я туда не лез бы. проблема в том что иногда тест падает в дестректоре с сегфолтом и сообщением corrupted size ... я не уверен что проблема тут, но после этих правок больше не падало. на винде да - надо проверить - погонять тесты
Owner

ок

ок
andrey reviewed 2026-03-18 09:01:52 +03:00
@@ -527,6 +527,7 @@ bool PIEthernet::listen(bool threaded) {
listen_threaded = true;
server_bounded = false;
server_thread_.start(server_func);
server_thread_.waitForStart();
Author
Owner

после вызова PIEthernet::listen(threaded=true) сервер ещё не стартанул и при попытке коннекта получаю ошибку. А с этим вызовом ошибка сильно реже, т.к. хотя бы поток сервера уже стартанул. По хорошему тут бы дождаться что сокет забиндили уже, тогда ошибок бы совсем не было. Пока поставил костыли в виде piMinSleep после PIEthernet::listen

после вызова PIEthernet::listen(threaded=true) сервер ещё не стартанул и при попытке коннекта получаю ошибку. А с этим вызовом ошибка сильно реже, т.к. хотя бы поток сервера уже стартанул. По хорошему тут бы дождаться что сокет забиндили уже, тогда ошибок бы совсем не было. Пока поставил костыли в виде piMinSleep после PIEthernet::listen
Owner

зачем серверу вообще чего-то ждать? для тестов?? я как обычно

зачем серверу вообще чего-то ждать? для тестов?? я как обычно
Author
Owner

ага, это в тестах

ага, это в тестах
andrey reviewed 2026-03-18 09:05:21 +03:00
@@ -148,3 +150,3 @@
TEST(ClientServer, DynamicClients) {
auto const loop_timeout = 100_ms;
auto const loop_timeout = 10_ms;
Author
Owner

теперь эти тесты выполняются 600мс вместо 2600мс раньше, и всегда стабильны (раньше ~10% падало), проверял стабильность скриптом
for i in {1..100}; do echo -n "."; ctest --test-dir build/tests -R ClientServer.DynamicClients --output-on-failure 2>&1 | grep -q "Failed" && echo " FAILED $i" && echo "FAIL!"; done; echo " All OK!"

теперь эти тесты выполняются 600мс вместо 2600мс раньше, и всегда стабильны (раньше ~10% падало), проверял стабильность скриптом `for i in {1..100}; do echo -n "."; ctest --test-dir build/tests -R ClientServer.DynamicClients --output-on-failure 2>&1 | grep -q "Failed" && echo " FAILED $i" && echo "FAIL!"; done; echo " All OK!"`
peri4 merged commit 35140ee002 into master 2026-03-18 11:08:49 +03:00
andrey deleted branch some_fixes 2026-03-18 12:03:03 +03:00
Sign in to join this conversation.