‮Сдвиг по фазе (kincajou) wrote,
‮Сдвиг по фазе
kincajou

TCP говнокод(2). Ускоряем!

Переписал автомат, выкинув проверку waitForReadyRead (из-за которой время от времени и непредсказуемо случалась ошибка SocketTimeoutError). Теперь вход в автомат возможен из двух разных функций: при получении сигнала от, например, кнопки -- когда пользователь хочет получить данные от устройства -- и от сокета (readyRead). Сначала автомат шлёт запрос в устройство, запоминает состояние и выходит. Потом срабатывает сокет и снова запускается автомат: он смотрит, в каком состоянии был, размышляет о том, что надо сделать дальше и либо выдаёт уже свой сигнал готовности данных чтения (или завершения операции записи, если мнеэто понадобится когда-нибудь), либо идёт по циклу состояний.

Получение данных из сокета теперь работает не с одиночными байтами, а с доступным объёмом. Не знаю, правда, как проверить работоспособность алгоритма, если данных пришло меньше, чем надо. Теоретически, пока не придёт "минимальный квант", функция приёма просто будет завершаться, ничего не делая. Тут уже зависит от того, как на самом деле генерится сигнал readyRead. Если он может выскакивать, даже если пришёл всего один байт,... а потом ещё один байт (и снова срабатывание сигнала)... и ещё один.. или два.. тогда должно работать норм. Если же это не так, то х.з.
Subscribe

  • Спохватились

    На Байконуре расследуют предполагаемую кражу деталей с дорогостоящими редкоземельными металлами. Она могла произойти на площадке №110, с которой…

  • Ну что.

    SN10 - первый прототип старшипа, взлетевший дважды с минимальным техническим обслуживанием между стартами, с отработкой метода быстрого избавления от…

  • Как выглядит хорошо аргументированное мнение?

    Это можно узнать на примере соломонова фотовладьки: Истерикой несгибаемого борца с мировым злом удовлетворён. Кстати, о синонимах

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 4 comments