Как использовать фильтр boost :: iostreams напрямую - PullRequest
2 голосов
/ 14 ноября 2011

Как я могу использовать boost :: iostreams :: gzip_decompressor для распаковки последовательности boost :: asio :: streambuf?

Вот что я имел в виду (нерабочий псевдокод):

struct Foo {
public:
    void sinkData(boost::asio::streambuf & buf) {
        z.write(boost::asio::buffer_cast<const char*>(buf.data()), buf.size());
        while(write());
    }

    void flush() {
        z.flush();
        while(write());
    }

private:
    bool write() {
        char buf[1024];
        size_t s = z.read(buf, 1024);
        std::cout << std::string(buf, s) << std::endl;
        return 
    }

    gzip_decompressor z;
}

Функции sinkData и flush не могут быть изменены.Sinkdata () вызывается несколько раз, после чего следует один вызов flush ().

Является ли boost :: iostreams :: gzip_decompressor лучшей библиотекой для этой цели, если да, то как это сделать?Иначе, что еще можно было бы предложить?

...