Lines Matching refs:jr

6 bool w_json_buffer_init(w_jbuffer_t *jr)  in w_json_buffer_init()  argument
8 memset(jr, 0, sizeof(*jr)); in w_json_buffer_init()
10 jr->allocd = WATCHMAN_IO_BUF_SIZE; in w_json_buffer_init()
11 jr->buf = malloc(jr->allocd); in w_json_buffer_init()
13 if (!jr->buf) { in w_json_buffer_init()
20 void w_json_buffer_reset(w_jbuffer_t *jr) in w_json_buffer_reset() argument
22 jr->wpos = 0; in w_json_buffer_reset()
23 jr->rpos = 0; in w_json_buffer_reset()
26 void w_json_buffer_free(w_jbuffer_t *jr) in w_json_buffer_free() argument
28 free(jr->buf); in w_json_buffer_free()
29 memset(jr, 0, sizeof(*jr)); in w_json_buffer_free()
33 static inline uint32_t shunt_down(w_jbuffer_t *jr) in shunt_down() argument
35 if (jr->rpos && jr->rpos == jr->wpos) { in shunt_down()
36 jr->rpos = 0; in shunt_down()
37 jr->wpos = 0; in shunt_down()
39 if (jr->rpos && jr->rpos < jr->wpos) { in shunt_down()
40 memmove(jr->buf, jr->buf + jr->rpos, jr->wpos - jr->rpos); in shunt_down()
41 jr->wpos -= jr->rpos; in shunt_down()
42 jr->rpos = 0; in shunt_down()
45 return jr->allocd - jr->wpos; in shunt_down()
48 static bool fill_buffer(w_jbuffer_t *jr, w_stm_t stm) in fill_buffer() argument
53 avail = shunt_down(jr); in fill_buffer()
57 char *buf = realloc(jr->buf, jr->allocd * 2); in fill_buffer()
63 jr->buf = buf; in fill_buffer()
64 jr->allocd *= 2; in fill_buffer()
66 avail = jr->allocd - jr->wpos; in fill_buffer()
70 r = w_stm_read(stm, jr->buf + jr->wpos, avail); in fill_buffer()
75 jr->wpos += r; in fill_buffer()
80 static inline enum w_pdu_type detect_pdu(w_jbuffer_t *jr) in detect_pdu() argument
82 if (jr->wpos - jr->rpos < 2) { in detect_pdu()
85 if (memcmp(jr->buf + jr->rpos, BSER_MAGIC, 2) == 0) { in detect_pdu()
91 static json_t *read_json_pretty_pdu(w_jbuffer_t *jr, w_stm_t stm, json_error_t *jerr) in read_json_pretty_pdu() argument
98 nl = jr->buf + jr->wpos; in read_json_pretty_pdu()
99 r = (int)(nl - (jr->buf + jr->rpos)); in read_json_pretty_pdu()
100 res = json_loadb(jr->buf + jr->rpos, r, 0, jerr); in read_json_pretty_pdu()
103 if (!fill_buffer(jr, stm)) { in read_json_pretty_pdu()
108 nl = jr->buf + jr->wpos; in read_json_pretty_pdu()
109 r = (int)(nl - (jr->buf + jr->rpos)); in read_json_pretty_pdu()
111 res = json_loadb(jr->buf + jr->rpos, r, 0, jerr); in read_json_pretty_pdu()
115 jr->rpos += r + 1; in read_json_pretty_pdu()
120 static json_t *read_json_pdu(w_jbuffer_t *jr, w_stm_t stm, json_error_t *jerr) in read_json_pdu() argument
128 nl = memchr(jr->buf + jr->rpos, '\n', jr->wpos - jr->rpos); in read_json_pdu()
133 if (!fill_buffer(jr, stm)) { in read_json_pdu()
138 nl = jr->buf + jr->wpos; in read_json_pdu()
143 nl = memchr(jr->buf + jr->rpos, '\n', jr->wpos - jr->rpos); in read_json_pdu()
147 r = (int)(nl - (jr->buf + jr->rpos)); in read_json_pdu()
148 res = json_loadb(jr->buf + jr->rpos, r, 0, jerr); in read_json_pdu()
151 jr->rpos += r + 1; in read_json_pdu()
156 bool w_bser_decode_pdu_len(w_jbuffer_t *jr, w_stm_t stm, in w_bser_decode_pdu_len() argument
161 while (!bunser_int(jr->buf + jr->rpos, jr->wpos - jr->rpos, in w_bser_decode_pdu_len()
168 if (!fill_buffer(jr, stm)) { in w_bser_decode_pdu_len()
174 jr->rpos += (uint32_t)needed; in w_bser_decode_pdu_len()
179 static json_t *read_bser_pdu(w_jbuffer_t *jr, w_stm_t stm, json_error_t *jerr) in read_bser_pdu() argument
188 jr->rpos += 2; in read_bser_pdu()
192 if (!w_bser_decode_pdu_len(jr, stm, &val, jerr)) { in read_bser_pdu()
197 need = val - (jr->allocd - jr->wpos); in read_bser_pdu()
199 ideal = jr->allocd; in read_bser_pdu()
203 if (ideal > jr->allocd) { in read_bser_pdu()
204 char *buf = realloc(jr->buf, ideal); in read_bser_pdu()
213 jr->buf = buf; in read_bser_pdu()
214 jr->allocd = ideal; in read_bser_pdu()
219 while ((jr->wpos - jr->rpos) < val) { in read_bser_pdu()
220 r = w_stm_read(stm, jr->buf + jr->wpos, jr->allocd - jr->wpos); in read_bser_pdu()
227 jr->wpos += r; in read_bser_pdu()
230 obj = bunser(jr->buf + jr->rpos, jr->buf + jr->wpos, &needed, jerr); in read_bser_pdu()
233 jr->rpos = jr->wpos; in read_bser_pdu()
239 static bool read_and_detect_pdu(w_jbuffer_t *jr, w_stm_t stm, in read_and_detect_pdu() argument
244 shunt_down(jr); in read_and_detect_pdu()
245 pdu = detect_pdu(jr); in read_and_detect_pdu()
247 if (!fill_buffer(jr, stm)) { in read_and_detect_pdu()
255 pdu = detect_pdu(jr); in read_and_detect_pdu()
264 jr->pdu_type = pdu; in read_and_detect_pdu()
316 static bool stream_n_bytes(w_jbuffer_t *jr, w_stm_t stm, json_int_t len, in stream_n_bytes() argument
321 if (!output_bytes(jr->buf, jr->rpos)) { in stream_n_bytes()
324 jr->rpos, strerror(errno)); in stream_n_bytes()
328 uint32_t avail = jr->wpos - jr->rpos; in stream_n_bytes()
332 if (!output_bytes(jr->buf + jr->rpos, avail)) { in stream_n_bytes()
338 jr->rpos += avail; in stream_n_bytes()
346 avail = MIN((uint32_t)len, shunt_down(jr)); in stream_n_bytes()
347 r = w_stm_read(stm, jr->buf + jr->wpos, avail); in stream_n_bytes()
356 jr->wpos += r; in stream_n_bytes()
362 static bool stream_pdu(w_jbuffer_t *jr, w_stm_t stm, json_error_t *jerr) in stream_pdu() argument
364 switch (jr->pdu_type) { in stream_pdu()
367 return stream_until_newline(jr, stm); in stream_pdu()
371 jr->rpos += 2; in stream_pdu()
372 if (!w_bser_decode_pdu_len(jr, stm, &len, jerr)) { in stream_pdu()
375 return stream_n_bytes(jr, stm, len, jerr); in stream_pdu()
378 w_log(W_LOG_FATAL, "not streaming for pdu type %d\n", jr->pdu_type); in stream_pdu()
383 static json_t *read_pdu_into_json(w_jbuffer_t *jr, w_stm_t stm, in read_pdu_into_json() argument
386 switch (jr->pdu_type) { in read_pdu_into_json()
388 return read_json_pdu(jr, stm, jerr); in read_pdu_into_json()
390 return read_json_pretty_pdu(jr, stm, jerr); in read_pdu_into_json()
392 return read_bser_pdu(jr, stm, jerr); in read_pdu_into_json()
396 bool w_json_buffer_passthru(w_jbuffer_t *jr, in w_json_buffer_passthru() argument
405 if (!read_and_detect_pdu(jr, stm, &jerr)) { in w_json_buffer_passthru()
411 if (jr->pdu_type == output_pdu) { in w_json_buffer_passthru()
413 if (!stream_pdu(jr, stm, &jerr)) { in w_json_buffer_passthru()
420 j = read_pdu_into_json(jr, stm, &jerr); in w_json_buffer_passthru()
436 json_t *w_json_buffer_next(w_jbuffer_t *jr, w_stm_t stm, json_error_t *jerr) in w_json_buffer_next() argument
439 if (!read_and_detect_pdu(jr, stm, jerr)) { in w_json_buffer_next()
442 return read_pdu_into_json(jr, stm, jerr); in w_json_buffer_next()
447 w_jbuffer_t *jr; member
454 while (data->jr->wpos - data->jr->rpos) { in jbuffer_flush()
455 x = w_stm_write(data->stm, data->jr->buf + data->jr->rpos, in jbuffer_flush()
456 data->jr->wpos - data->jr->rpos); in jbuffer_flush()
462 data->jr->rpos += x; in jbuffer_flush()
465 data->jr->rpos = data->jr->wpos = 0; in jbuffer_flush()
475 int room = data->jr->allocd - data->jr->wpos; in jbuffer_write()
482 room = data->jr->allocd - data->jr->wpos; in jbuffer_write()
490 memcpy(data->jr->buf + data->jr->wpos, in jbuffer_write()
495 data->jr->wpos += room; in jbuffer_write()
501 bool w_json_buffer_write_bser(w_jbuffer_t *jr, w_stm_t stm, json_t *json) in w_json_buffer_write_bser() argument
503 struct jbuffer_write_data data = { stm, jr }; in w_json_buffer_write_bser()
515 bool w_json_buffer_write(w_jbuffer_t *jr, w_stm_t stm, json_t *json, int flags) in w_json_buffer_write() argument
517 struct jbuffer_write_data data = { stm, jr }; in w_json_buffer_write()
534 w_jbuffer_t *jr, w_stm_t stm, json_t *json) in w_ser_write_pdu() argument
538 return w_json_buffer_write(jr, stm, json, JSON_COMPACT); in w_ser_write_pdu()
540 return w_json_buffer_write(jr, stm, json, JSON_INDENT(4)); in w_ser_write_pdu()
542 return w_json_buffer_write_bser(jr, stm, json); in w_ser_write_pdu()