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