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
        close();
        return;
    }


Then my close() method looks like:

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


This works for me.

Evan

--
Evan Jones
http://evanjones.ca/

--
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 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.

Reply via email to