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

Function csv_setup_reader

libCacheSim/traceReader/generalReader/csv.c:288–339  ·  view source on GitHub ↗

* @brief setup a csv reader * * @param reader */

Source from the content-addressed store, hash-verified

286 * @param reader
287 */
288void csv_setup_reader(reader_t *const reader) {
289 unsigned char options = CSV_APPEND_NULL;
290 reader->trace_format = TXT_TRACE_FORMAT;
291 reader_init_param_t *init_params = &reader->init_params;
292
293 csv_params_t *csv_params = (csv_params_t *)malloc(sizeof(csv_params_t));
294 memset(csv_params, 0, sizeof(csv_params_t));
295 reader->reader_params = csv_params;
296 csv_params->curr_field_idx = 1;
297
298 csv_params->time_field_idx = init_params->time_field;
299 csv_params->obj_id_field_idx = init_params->obj_id_field;
300 csv_params->obj_size_field_idx = init_params->obj_size_field;
301 csv_params->op_field_idx = init_params->op_field;
302 csv_params->ttl_field_idx = init_params->ttl_field;
303 csv_params->cnt_field_idx = init_params->cnt_field;
304 csv_params->tenant_field_idx = init_params->tenant_field;
305 csv_params->n_feature_fields = init_params->n_feature_fields;
306 for (int i = 0; i < csv_params->n_feature_fields; i++) {
307 csv_params->feature_fields[i] = init_params->feature_fields[i];
308 }
309
310 csv_params->csv_parser =
311 (struct csv_parser *)malloc(sizeof(struct csv_parser));
312 csv_params->n_obj_id_is_num = 0;
313 csv_params->n_obj_id_is_not_num = 0;
314
315 if (csv_init(csv_params->csv_parser, options) != 0) {
316 fprintf(stderr, "Failed to initialize csv parser\n");
317 exit(1);
318 }
319
320 /* if we setup something here, then we must setup in the reset_reader func */
321 if (init_params->delimiter == '\0') {
322 char delim = csv_detect_delimiter(reader);
323 csv_params->delimiter = delim;
324 } else {
325 csv_params->delimiter = init_params->delimiter;
326 }
327 csv_set_delim(csv_params->csv_parser, csv_params->delimiter);
328
329 if (!init_params->has_header_set) {
330 csv_params->has_header = csv_detect_header(reader);
331 } else {
332 csv_params->has_header = init_params->has_header;
333 }
334 if (csv_params->has_header) {
335 ssize_t read_size =
336 getline(&reader->line_buf, &reader->line_buf_size, reader->file);
337 reader->trace_start_offset = read_size;
338 }
339}
340
341/**
342 * @brief read one request from a csv file

Callers 1

setup_readerFunction · 0.85

Calls 4

csv_initFunction · 0.85
csv_detect_delimiterFunction · 0.85
csv_set_delimFunction · 0.85
csv_detect_headerFunction · 0.85

Tested by

no test coverage detected