#pragma once
class BufferedReader {
private:
std::string data_;
PackageStream* stream;
public:
explicit BufferedReader(PackageStream* stream) {
this->stream = stream;
}
int32_t Read(char* output_buffer, int32_t buffer_len) {
std::unique_ptr<char[]> buf(new char[stream->PackageLen()]);
int len = 1, n = 0;
while (len != 0 && n < buffer_len) {
len = stream->ReadPackage(buf.get());
//cout << buf.get() << ' ' << len << endl;
for (int i = 0; i < len; i++) {
output_buffer[n++] = buf[i];
}
}
return n;
}
};