rstream/wstream: Unify structures and simplify API

- Simplify RStream/WStream API and make it more consistent with libuv.
- Move into the event loop layer(event subdirectory)
- Remove uv_helpers module.
- Simplify job/process internal modules/API.
- Unify RStream and WStream into a single structure. This is necessary because
  libuv streams can be readable and writable at the same time(and because the
  uv_helpers.c hack to associate multiple streams with libuv handle was removed)
- Make struct definition public, allowing more flexible/simple memory
  management by users of the module.
- Adapt channel/job modules to cope with the changes.
This commit is contained in:
Thiago de Arruda
2015-07-16 23:10:15 -03:00
parent 991d3ec1e6
commit ac2bd02561
33 changed files with 765 additions and 991 deletions

View File

@@ -83,8 +83,7 @@
#include "nvim/window.h"
#include "nvim/os/os.h"
#include "nvim/os/job.h"
#include "nvim/os/rstream.h"
#include "nvim/os/rstream_defs.h"
#include "nvim/event/rstream.h"
#include "nvim/os/time.h"
#include "nvim/msgpack_rpc/channel.h"
#include "nvim/msgpack_rpc/server.h"
@@ -20353,19 +20352,19 @@ static inline void push_job_event(Job *job, ufunc_T *callback,
}, !disable_job_defer);
}
static void on_job_stdout(RStream *rstream, RBuffer *buf, void *job, bool eof)
static void on_job_stdout(Stream *stream, RBuffer *buf, void *job, bool eof)
{
TerminalJobData *data = job_data(job);
on_job_output(rstream, job, buf, eof, data->on_stdout, "stdout");
on_job_output(stream, job, buf, eof, data->on_stdout, "stdout");
}
static void on_job_stderr(RStream *rstream, RBuffer *buf, void *job, bool eof)
static void on_job_stderr(Stream *stream, RBuffer *buf, void *job, bool eof)
{
TerminalJobData *data = job_data(job);
on_job_output(rstream, job, buf, eof, data->on_stderr, "stderr");
on_job_output(stream, job, buf, eof, data->on_stderr, "stderr");
}
static void on_job_output(RStream *rstream, Job *job, RBuffer *buf, bool eof,
static void on_job_output(Stream *stream, Job *job, RBuffer *buf, bool eof,
ufunc_T *callback, const char *type)
{
if (eof) {