#include #include class BufferedReader { public: explicit BufferedReader(PackageStream* stream): stream_(stream) {} int32_t Read(char* output_buffer, int32_t buffer_len) { std::string s; int len = stream_->PackageLen(); char* chararray = new char[len]; while (s.length() < buffer_len) { int temp = stream_->ReadPackage(chararray); for (int i = 0; i < temp; i++) { s += chararray[i]; } if (temp < len) { break; } } int length_buf = std::min(buffer_len, s.length()); for (int i = 0; i < length_buf; ++i) { output_buffer[i] = s[i]; } return length_buf; } private: PackageStream* stream_; };