static void write_process_input(ChildProcess * prs) { ProcessInput * inp = prs->inp_struct = loc_alloc_zero(sizeof(ProcessInput)); inp->prs = prs; inp->req.client_data = inp; inp->req.done = write_process_input_done; inp->req.type = AsyncReqWrite; inp->req.u.fio.fd = prs->inp; virtual_stream_create(PROCESSES, pid2id(prs->pid, 0), 0x1000, VS_ENABLE_REMOTE_WRITE, process_input_streams_callback, inp, &inp->vstream); virtual_stream_get_id(inp->vstream, prs->inp_id, sizeof(prs->inp_id)); }
static void send_event_stream_disposed(OutputStream * out, VirtualStream * stream) { char id[256]; virtual_stream_get_id(stream, id, sizeof(id)); write_stringz(out, "E"); write_stringz(out, STREAMS); write_stringz(out, "disposed"); json_write_string(out, stream->type); write_stream(out, 0); json_write_string(out, id); write_stream(out, 0); write_stream(out, MARKER_EOM); }
static ProcessOutput * read_process_output(ChildProcess * prs, int fd, char * id, size_t id_size) { ProcessOutput * out = loc_alloc_zero(sizeof(ProcessOutput)); out->prs = prs; out->req.client_data = out; out->req.done = read_process_output_done; out->req.type = AsyncReqRead; out->req.u.fio.bufp = out->buf; out->req.u.fio.bufsz = sizeof(out->buf); out->req.u.fio.fd = fd; virtual_stream_create(PROCESSES, pid2id(prs->pid, 0), 0x1000, VS_ENABLE_REMOTE_READ, process_output_streams_callback, out, &out->vstream); virtual_stream_get_id(out->vstream, id, id_size); out->req_posted = 1; async_req_post(&out->req); return out; }
static void send_event_stream_created(OutputStream * out, VirtualStream * stream, const char * context_id) { char id[256]; virtual_stream_get_id(stream, id, sizeof(id)); write_stringz(out, "E"); write_stringz(out, STREAMS); write_stringz(out, "created"); json_write_string(out, stream->type); write_stream(out, 0); json_write_string(out, id); write_stream(out, 0); json_write_string(out, context_id); write_stream(out, 0); write_stream(out, MARKER_EOM); flush_stream(out); }