On Jun 25, 2010, at 4:40 , Louis-Marie wrote:
My question is then: how can I safely detect end of file? I guess I
could do something like calling Next() on the underlying
FileInputStream until it returns false (end of file) or a non empty
buffer (and then call BackUp() to re-queue this buffer before creating
the CodedInputStream), but it seems a bit overkill (and probably not
the best thing from a performance point of view...)

I think that detecting the end of file may depend on your underlying input stream. I have some code that uses the built-in FileInputStream, and I simply keep trying to read values until I get an error:

    bool success = in.ReadVarint32(&size);
    if (!success) {
        // we are probably at EOF

Then my close() method looks like:

    assert(input_->GetErrno() == 0);
    bool success = input_->Close();

This works for me.


Evan Jones

You received this message because you are subscribed to the Google Groups "Protocol 
Buffers" group.
To post to this group, send email to proto...@googlegroups.com.
To unsubscribe from this group, send email to 
For more options, visit this group at 

Reply via email to