If more than one packet has arrived in the mean time, process them all.
This commit is contained in:
parent
6c65a26ddf
commit
0dfd7b8024
1 changed files with 28 additions and 19 deletions
|
@ -446,33 +446,42 @@ bool FGGeneric::process() {
|
|||
goto error_out;
|
||||
}
|
||||
} else if ( get_direction() == SG_IO_IN ) {
|
||||
if ( io->get_type() == sgFileType ) {
|
||||
if (!binary_mode) {
|
||||
if ( (length = io->readline( buf, FG_MAX_MSG_SIZE )) > 0 ) {
|
||||
length = io->readline( buf, FG_MAX_MSG_SIZE );
|
||||
if ( length > 0 ) {
|
||||
parse_message();
|
||||
} else {
|
||||
SG_LOG( SG_IO, SG_ALERT, "Error reading data." );
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if ( (length = io->read( buf, binary_record_length )) > 0 ) {
|
||||
if (length != binary_record_length) {
|
||||
length = io->read( buf, binary_record_length );
|
||||
if ( length == binary_record_length ) {
|
||||
parse_message();
|
||||
} else {
|
||||
SG_LOG( SG_IO, SG_ALERT,
|
||||
"Generic protocol: Received binary "
|
||||
"record of unexpected size, expected: "
|
||||
<< binary_record_length << "received: "
|
||||
<< binary_record_length << " but received: "
|
||||
<< length);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
SG_LOG( SG_IO, SG_DEBUG,
|
||||
"Generic protocol: received record of " << length <<
|
||||
" bytes.");
|
||||
do {
|
||||
if (!binary_mode) {
|
||||
length = io->readline( buf, FG_MAX_MSG_SIZE );
|
||||
if ( length > 0 ) {
|
||||
parse_message();
|
||||
}
|
||||
} else {
|
||||
SG_LOG( SG_IO, SG_INFO,
|
||||
"Generic protocol: Error reading data." );
|
||||
return false;
|
||||
length = io->read( buf, binary_record_length );
|
||||
if ( length == binary_record_length ) {
|
||||
parse_message();
|
||||
}
|
||||
}
|
||||
} while ( length == binary_record_length );
|
||||
}
|
||||
}
|
||||
return true;
|
||||
error_out:
|
||||
|
|
Loading…
Reference in a new issue