virtual ssize_t read()

in net/http/body.cpp [210:228]


    virtual ssize_t read(void *buf, size_t count) override {
        ssize_t ret = 0;
        while (count > 0 && !m_finish) {
            ret += read_from_line_buf(buf, count);
            //read remain from stream
            if (m_chunked_remain > 0 && count > 0) {
                auto r = read_from_stream(buf, count);
                if (r < 0) return r;
                ret += r;
                if (m_chunked_remain > 0 && r == 0) break;
            }
            // get new chunk header
            if (m_chunked_remain == 0) {
                auto r = get_new_chunk();
                if (r < 0) return r;
            }
        }
        return ret;
    }