diff options
| author | bfredl <bjorn.linse@gmail.com> | 2024-06-01 09:53:45 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-01 09:53:45 +0200 |
| commit | 2008fe7b85a8c03cbff3ed51c5715ddf5cb555fd (patch) | |
| tree | 3fe96507019c1d493f2e7f5212c35f063195b29d /src/nvim/event/stream.c | |
| parent | 50f6d364c661b88a1edc5ffc8e284d1c0ff70810 (diff) | |
| parent | c13c50b752dca322a5ec77dea6188c9e3694549b (diff) | |
| download | rneovim-2008fe7b85a8c03cbff3ed51c5715ddf5cb555fd.tar.gz rneovim-2008fe7b85a8c03cbff3ed51c5715ddf5cb555fd.tar.bz2 rneovim-2008fe7b85a8c03cbff3ed51c5715ddf5cb555fd.zip | |
Merge pull request #29106 from bfredl/rwstream
refactor(io): separate types for read and write streams
Diffstat (limited to 'src/nvim/event/stream.c')
| -rw-r--r-- | src/nvim/event/stream.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/nvim/event/stream.c b/src/nvim/event/stream.c index 0b9ed4f25b..3d26dd868f 100644 --- a/src/nvim/event/stream.c +++ b/src/nvim/event/stream.c @@ -85,21 +85,17 @@ void stream_init(Loop *loop, Stream *stream, int fd, uv_stream_t *uvstream) } stream->internal_data = NULL; - stream->fpos = 0; stream->curmem = 0; stream->maxmem = 0; stream->pending_reqs = 0; - stream->read_cb = NULL; stream->write_cb = NULL; stream->close_cb = NULL; stream->internal_close_cb = NULL; stream->closed = false; - stream->buffer = NULL; stream->events = NULL; - stream->num_bytes = 0; } -void stream_close(Stream *stream, stream_close_cb on_stream_close, void *data) +void stream_close(Stream *stream, stream_close_cb on_stream_close, void *data, bool rstream) FUNC_ATTR_NONNULL_ARG(1) { assert(!stream->closed); @@ -116,18 +112,18 @@ void stream_close(Stream *stream, stream_close_cb on_stream_close, void *data) #endif if (!stream->pending_reqs) { - stream_close_handle(stream); + stream_close_handle(stream, rstream); } } -void stream_may_close(Stream *stream) +void stream_may_close(Stream *stream, bool rstream) { if (!stream->closed) { - stream_close(stream, NULL, NULL); + stream_close(stream, NULL, NULL, rstream); } } -void stream_close_handle(Stream *stream) +void stream_close_handle(Stream *stream, bool rstream) FUNC_ATTR_NONNULL_ALL { uv_handle_t *handle = NULL; @@ -145,16 +141,22 @@ void stream_close_handle(Stream *stream) assert(handle != NULL); if (!uv_is_closing(handle)) { - uv_close(handle, close_cb); + uv_close(handle, rstream ? rstream_close_cb : close_cb); } } -static void close_cb(uv_handle_t *handle) +static void rstream_close_cb(uv_handle_t *handle) { - Stream *stream = handle->data; + RStream *stream = handle->data; if (stream->buffer) { rbuffer_free(stream->buffer); } + close_cb(handle); +} + +static void close_cb(uv_handle_t *handle) +{ + Stream *stream = handle->data; if (stream->close_cb) { stream->close_cb(stream, stream->close_cb_data); } |