Changes between Version 1 and Version 2 of Ticket #21, comment 2


Ignore:
Timestamp:
Mar 18, 2019, 6:43:49 PM (5 years ago)
Author:
alx

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #21, comment 2

    v1 v2  
    66По поводу второй части (невозобновления передачи после разрыва соединения) - уверен, что это тривиальный баг, подобный исправленному в r91, то есть при разрыве соединения не делается попытка возобновить передачу. Поэтому предлагаю сосредоточиться на первой части проблемы.
    77
    8 Не очень понятно, по какому критерию принимать решение об "отбрасывании" данных для соединения, не готового к их приему. Один из вариантов, который пришел мне в голову, такой: если буфер заполнен данными, но при этом часть данных уже передана хотя бы в одно из соединений, то новые данные из последовательного порта принимаются (но не больше уже переданной части буфера), из "головы" буфера удаляются данные, размером с вновь полученный фрагмент (при этом те соединения, которые из еще не получили, эти данные потеряют), а вновь прочитанные из порта данные добавляются в "хвост" буфера. Таким образом, полная остановка потока произойдет только в случае, если __все__ клиентские соединения не готовы к приему новых данных.
     8Не очень понятно, по какому критерию принимать решение об "отбрасывании" данных для соединения, не готового к их приему. Один из вариантов, который пришел мне в голову, такой: если буфер заполнен данными, но при этом часть данных уже передана хотя бы в одно из соединений, то новые данные из последовательного порта принимаются (но не больше уже переданной части буфера), из "головы" буфера удаляются данные, размером с вновь полученный фрагмент (при этом те соединения, которые их еще не получили, эти данные потеряют), а вновь прочитанные из порта данные добавляются в "хвост" буфера. Таким образом, полная остановка потока произойдет только в случае, если __все__ клиентские соединения не готовы к приему новых данных.
    99
    1010Прошу высказать критику данного варианта и/или предложить альтернативные варианты решения.