class BufferedReader {
public:
explicit BufferedReader(PackageStream* stream) {
stream_ = stream;
tempStr = new char(stream_->PackageLen());
tempStrSize = stream_->ReadPackage(tempStr);
}
int32_t Read(char* output_buffer, int32_t buffer_len) {
int32_t minSize;
if (buffer_len < tempStrSize - lastIndex + 1)
minSize = buffer_len;
else
minSize = tempStrSize - lastIndex + 1;
for (int i = 0; i < minSize; ++lastIndex, ++i) {
output_buffer[i] = tempStr[lastIndex];
}
return minSize;
}
private:
char* tempStr;
int32_t tempStrSize;
int32_t lastIndex = 0;
PackageStream* stream_;
};