устройства, в кольцевой буфер сервера читаются данные, из другого потока они переодически забираются клиентом, когда есть возможность. Если данные не забирать, через некоторое время буфер переполнится. И нужны инструкции серверу на случай когда "кончатся патроны".
1. Выбросить исключение, и перестать работать, сообщив об ошибке клиенту и что он сам дурак.
2. Очистить буфер, удалив все данные и начать принимать их снова, клиент сам виноват что не забрал данные вовремя и потерял их.
3. Скопировать принятые данные, пересоздать буфер увеличив вдвое, начать принимать данные дальше, надеясь что клиент подключится и все таки заберет их.
В 1 варианте пользователь сразу увидит ошибку, но программа не будет работать. Во 2 программа работает и незаметно может терять данные, пользователь может этого не заметить. В 3 - сервер работает до упора, пока не сьест всю память и не свалится с Out of memory.
Какую вариант лучше выбрать? Целостность принимаемых данных и непрерывность работы сервера одинаково важны.
Вариант 3 до некоторого вменяемого порога, потом 1
У тебя там опять запись разговоров? Второй вариант тогда :)
Обсуждают сегодня