История изменений
Исправление LINUX-ORG-RU, (текущая версия) :
Если нельзя вставить туда, то придётся вставит себе, в смысле вычислять динамически момент когда данные пошли ну точно корректные типа
while(true) /* входим в основной цикл чтения*/
{
while(true) /* тут же перехватываем его и вычисляем точно точно правильное*/
{
buff[i++] = get_byte(stream_data)
if (i >= buff_size)
{
if (data_is_correct(buff))
{ /*как только узнали что всё пришло верное*/
int x = 0
/*передаём что набрали в основную обработку*/
while(x++ != i)
{
collect_input_data(buff[x])
}
/* валим сразу после этого от сюда*/
break
}else{
/* не прошло проверку, в помойку и по новой */
i = 0
memset(buff,0,buff_size)
}
}
}
/*и уже продолжаем получать дальше всё как надо*/
collect_input_data(get_byte(stream_data))
...
}
- Либо ты должен мочь вычислить правильность данных на приёме
- Либо ты должен мочь сказать где что на отдаче
Что удобнее то и сделать. Первое гибче, второе проще.
Исходная версия LINUX-ORG-RU, :
Если нельзя вставить туда, то придётся вставит себе, в смысле вычислять динамически момент когда данные пошли ну точно корректные типа
while(true) /* входим в основной цикл чтения*/
{
while(true) /* тут же перехватываем его и вычисляем точно точно правильное*/
{
buff[i++] = get_byte(stream_data)
if (i >= buff_size)
{
if (data_is_correct(buff))
{ /*как только узнали что всё пришло верное*/
int x = 0
/*передаём что набрали в основную обработку*/
while(x++ != i)
{
collect_input_data(buff[x])
}
/* валим сразу после этого от сюда*/
break
}else{
/* не прошло проверку, в помойку и по новой */
i = 0
memset(buff,0,buff_size)
}
}
}
/*и уже продолжаем получать дальше всё как надо*/
collect_input_data(get_byte(stream_data))
...
}