MCPcopy Create free account
hub / github.com/1a1a11a/libCacheSim / csv_read_one_req

Function csv_read_one_req

libCacheSim/traceReader/generalReader/csv.c:348–382  ·  view source on GitHub ↗

* @brief read one request from a csv file * * @param reader * @param req * @return int */

Source from the content-addressed store, hash-verified

346 * @return int
347 */
348int csv_read_one_req(reader_t *const reader, request_t *const req) {
349 csv_params_t *csv_params = reader->reader_params;
350 struct csv_parser *csv_parser = csv_params->csv_parser;
351 char **line_buf_ptr = &reader->line_buf;
352 size_t *line_buf_size_ptr = &reader->line_buf_size;
353
354 csv_params->request = req;
355 DEBUG_ASSERT(csv_params->curr_field_idx == 1);
356
357 ssize_t read_size = getline(line_buf_ptr, line_buf_size_ptr, reader->file);
358 if (read_size == -1) {
359 req->valid = false;
360 return 1;
361 }
362
363 if ((ssize_t)csv_parse(csv_parser, *line_buf_ptr, read_size, csv_cb1, csv_cb2,
364 reader) != read_size) {
365 WARN("parsing csv file error: %s\n",
366 csv_strerror(csv_error(csv_params->csv_parser)));
367 }
368
369 csv_fini(csv_params->csv_parser, csv_cb1, csv_cb2, reader);
370
371 if (req->obj_size == 0 && reader->ignore_size_zero_req) {
372 if (reader->read_direction == READ_FORWARD) {
373 return csv_read_one_req(reader, req);
374 } else {
375 return read_one_req_above(reader, req);
376 }
377 }
378
379 if (reader->n_req_left > 0) reader->last_req_clock_time = req->clock_time;
380
381 return 0;
382}
383
384void csv_reset_reader(reader_t *reader) {
385 csv_params_t *csv_params = reader->reader_params;

Callers 1

read_one_reqFunction · 0.85

Calls 5

csv_parseFunction · 0.85
csv_strerrorFunction · 0.85
csv_errorFunction · 0.85
csv_finiFunction · 0.85
read_one_req_aboveFunction · 0.85

Tested by

no test coverage detected