Hi!

I am using the GNU Common C++ library (version 1.3.25) class TTYSession to implement a simple XModem program. A very elegant abstraction, I must admit.

During an XModem session I wish to peek at a character in the incoming byte stream. To do that, I call the method peek(), inherited from std::istream.

However, this breaks the method TTYStream::isPending().

If the serial device buffer contains 1 unread byte, isPending() returns "true"; However, if peek() is called before isPending(), isPending returns "false" - regardless of the fact that unread data is in the buffer.

To me, this behaviour seems rather undesirable. I wish to check (in different functions) if data is available for reading with isPending() and occasionally take a peek at that data without actually reading it.

I took a quick look at your code starting at "serial.c:988". You use poll() to check for incoming bytes. The istream::peek() method probably marks the byte as "read" and poll() does not detect it.

Is it possible to either override istream::peek() or rewrite TTYStream::isPending() so that it becomes possible to peek at data before doing isPending() check on it?

--
Best Regards,
Tarmo Kuuse

Software developer
Oskando Ltd


_______________________________________________
Bayonne-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bayonne-devel

Reply via email to