#pragma once
#include <iostream>
#include <string>
#include <cstdint>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <memory>
class BufferedReader {
public:
explicit BufferedReader(PackageStream* stream);
int32_t Read(char* output_buffer, int32_t buffer_len);
PackageStream* ps;
};
BufferedReader::BufferedReader(PackageStream* stream) {
char buf[1500];
ps = new PackageStream(buf, 1);
}
int32_t BufferedReader::Read(char* output_buffer, int32_t buffer_len) {
int len = 0, add = -1;
for (int i = 0; i < buffer_len && add != 0; i++) {
add = ps->ReadPackage(output_buffer + len);
len += add;
}
return len;
}