| 24 | } |
| 25 | |
| 26 | inline size_t Read(void* buf, size_t len) { |
| 27 | if (MemInput_.Exhausted()) { |
| 28 | if (len > BufLen() / 2) { |
| 29 | return Slave_->Read(buf, len); |
| 30 | } |
| 31 | |
| 32 | MemInput_.Reset(Buf(), Slave_->Read(Buf(), BufLen())); |
| 33 | } |
| 34 | |
| 35 | return MemInput_.Read(buf, len); |
| 36 | } |
| 37 | |
| 38 | inline size_t Skip(size_t len) { |
| 39 | size_t totalSkipped = 0; |