Ejemplo n.º 1
0
Error uv11::write(WriteRequest& req, Stream& stream, Buffer const bufs[], unsigned int nbufs,
    WriteCb const& write_cb)
{
    req.write_cb = write_cb;
    int s = uv_write(
        &req.Get(),
        &stream.GetStream(),
        bufs, nbufs,
        [] (uv_write_t* r, int status) {
            WriteRequest* w = reinterpret_cast<WriteRequest*>(r->data);
            auto w_cb = w->write_cb;
            w->write_cb = nullptr;
            w_cb(*w, make_error(status));
        }
    );

    if (s) req.write_cb = nullptr;

    return make_error(s);
}