#pragma once
class BufferedReader {
public:
explicit BufferedReader(PackageStream* stream) : stream(stream) {
data = new char[stream->PackageLen()];
len = stream->ReadPackage(data);
}
int32_t Read(char* output_buffer, int32_t buffer_len) {
int32_t readed = 0;
while (len <= buffer_len - readed && len != 0) {
memcpy(output_buffer + readed, data, len);
readed += len;
len = stream->ReadPackage(data);
}
return readed;
}
private:
PackageStream* stream;
char* data;
int32_t len;
};