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 counter = 0; for (int i = 0; i < buffer_len; ++i) { output_buffer[i] = tempStr[i]; ++counter; } delete(tempStr); return counter; } private: PackageStream* stream_; };