#include <iostream>
#include <utility>
#include <algorithm>
#include <string>

class BufferedReader {
public:
    explicit BufferedReader(PackageStream *stream) : stream(stream) {
    }

    int32_t Read(char *output_buffer, int32_t buffer_len) {
        this->stream->package_len_ = buffer_len;
        return this->stream->ReadPackage(output_buffer);
    }

private:
    PackageStream *stream;
};