mercredi 8 juin 2022

How to report an error from the write() method of filter driver of category boost::iostreams::multichar_output_filter_tag?

In other words:

What to do in case of put() called from within write() fails?

I'm not certain, why the above is not sufficient. But here comes the code -- calling abort in case of error.

#include <boost/iostreams/filtering_stream.hpp>

struct filter
{   typedef char char_type;
    typedef boost::iostreams::multichar_output_filter_tag category;

    template<typename SINK>
    std::streamsize write(SINK &_rS, const char *const _p, const std::streamsize _iSize)
    {   for (std::size_t i = 0; i < _iSize; ++i)
            if (!boost::iostreams::put(_rS, _p[i]))
                abort();
        return _iSize;
    }
};

Aucun commentaire:

Enregistrer un commentaire