diff options
author | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2018-09-24 18:55:27 +0200 |
---|---|---|
committer | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2018-09-24 17:43:22 +0000 |
commit | 95cf63f4d79740caa1350f4578ef0b4ac0fe929e (patch) | |
tree | e7008ef2515cd8b24448c90426904b2b3011b8a8 /sharkd_session.c | |
parent | 4b4c11944c72952bf39d6fe41a7fe587cc3ccef0 (diff) |
sharkd: cleanup printf() usage during JSON generation (part I).
Lower number of printf()s by adding some function wrappers.
Replace:
printf("]"); with sharkd_json_array_close();
printf("}"); with sharkd_json_object_close();
printf("\["); with sharkd_json_array_open();
printf("{"); with sharkd_json_object_open();
These replaces lower number of printf() from 434 to 365 (15% reduction).
Change-Id: I44f2244a7c1f8992a38c56c64759ed039aafaedc
Reviewed-on: https://code.wireshark.org/review/29809
Petri-Dish: Jakub Zawadzki <darkjames-ws@darkjames.pl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Jakub Zawadzki <darkjames-ws@darkjames.pl>
Diffstat (limited to 'sharkd_session.c')
-rw-r--r-- | sharkd_session.c | 170 |
1 files changed, 97 insertions, 73 deletions
diff --git a/sharkd_session.c b/sharkd_session.c index 8a4da4801a..74804d0ec3 100644 --- a/sharkd_session.c +++ b/sharkd_session.c @@ -170,6 +170,30 @@ json_print_base64(const guint8 *data, size_t len) } static void +sharkd_json_array_open(void) +{ + printf("["); +} + +static void +sharkd_json_array_close(void) +{ + printf("]"); +} + +static void +sharkd_json_object_open(void) +{ + printf("{"); +} + +static void +sharkd_json_object_close(void) +{ + printf("}"); +} + +static void sharkd_session_filter_free(gpointer data) { struct sharkd_filter_item *l = (struct sharkd_filter_item *) data; @@ -253,7 +277,7 @@ sharkd_session_process_info_nstat_cb(const void *key, void *value, void *userdat printf("%s{", (*pi) ? "," : ""); printf("\"name\":\"%s\"", stat_tap->title); printf(",\"tap\":\"nstat:%s\"", (const char *) key); - printf("}"); + sharkd_json_object_close(); *pi = *pi + 1; return FALSE; @@ -272,7 +296,7 @@ sharkd_session_process_info_conv_cb(const void* key, void* value, void* userdata printf("%s{", (*pi) ? "," : ""); printf("\"name\":\"Conversation List/%s\"", label); printf(",\"tap\":\"conv:%s\"", label); - printf("}"); + sharkd_json_object_close(); *pi = *pi + 1; } @@ -282,7 +306,7 @@ sharkd_session_process_info_conv_cb(const void* key, void* value, void* userdata printf("%s{", (*pi) ? "," : ""); printf("\"name\":\"Endpoint/%s\"", label); printf(",\"tap\":\"endpt:%s\"", label); - printf("}"); + sharkd_json_object_close(); *pi = *pi + 1; } @@ -298,7 +322,7 @@ sharkd_session_seq_analysis_cb(const void *key, void *value, void *userdata) printf("%s{", (*pi) ? "," : ""); printf("\"name\":\"%s\"", sequence_analysis_get_ui_name(analysis)); printf(",\"tap\":\"seqa:%s\"", (const char *) key); - printf("}"); + sharkd_json_object_close(); *pi = *pi + 1; return FALSE; @@ -317,7 +341,7 @@ sharkd_export_object_visit_cb(const void *key _U_, void *value, void *user_data) printf("%s{", (*pi) ? "," : ""); printf("\"name\":\"Export Object/%s\"", label); printf(",\"tap\":\"eo:%s\"", filter); - printf("}"); + sharkd_json_object_close(); *pi = *pi + 1; return FALSE; @@ -336,7 +360,7 @@ sharkd_srt_visit_cb(const void *key _U_, void *value, void *user_data) printf("%s{", (*pi) ? "," : ""); printf("\"name\":\"Service Response Time/%s\"", label); printf(",\"tap\":\"srt:%s\"", filter); - printf("}"); + sharkd_json_object_close(); *pi = *pi + 1; return FALSE; @@ -355,7 +379,7 @@ sharkd_rtd_visit_cb(const void *key _U_, void *value, void *user_data) printf("%s{", (*pi) ? "," : ""); printf("\"name\":\"Response Time Delay/%s\"", label); printf(",\"tap\":\"rtd:%s\"", filter); - printf("}"); + sharkd_json_object_close(); *pi = *pi + 1; return FALSE; @@ -374,7 +398,7 @@ sharkd_follower_visit_cb(const void *key _U_, void *value, void *user_data) printf("%s{", (*pi) ? "," : ""); printf("\"name\":\"Follow/%s\"", label); printf(",\"tap\":\"follow:%s\"", filter); - printf("}"); + sharkd_json_object_close(); *pi = *pi + 1; return FALSE; @@ -438,9 +462,9 @@ sharkd_session_process_info(void) printf("%s{", (i) ? "," : ""); printf("\"name\":\"%s\"", col_descr); printf(",\"format\":\"%s\"", col_format); - printf("}"); + sharkd_json_object_close(); } - printf("]"); + sharkd_json_array_close(); printf(",\"stats\":["); { @@ -455,13 +479,13 @@ sharkd_session_process_info(void) printf("%s{", sepa); printf("\"name\":\"%s\"", cfg->name); printf(",\"tap\":\"stat:%s\"", cfg->abbr); - printf("}"); + sharkd_json_object_close(); sepa = ","; } g_list_free(cfg_list); } - printf("]"); + sharkd_json_array_close(); printf(",\"ftypes\":["); for (i = 0; i < FT_NUM_TYPES; i++) @@ -470,7 +494,7 @@ sharkd_session_process_info(void) printf(","); json_puts_string(ftype_name((ftenum_t) i)); } - printf("]"); + sharkd_json_array_close(); printf(",\"version\":"); json_puts_string(sharkd_version()); @@ -478,44 +502,44 @@ sharkd_session_process_info(void) printf(",\"nstat\":["); i = 0; stat_tap_iterate_tables(sharkd_session_process_info_nstat_cb, &i); - printf("]"); + sharkd_json_array_close(); printf(",\"convs\":["); i = 0; conversation_table_iterate_tables(sharkd_session_process_info_conv_cb, &i); - printf("]"); + sharkd_json_array_close(); printf(",\"seqa\":["); i = 0; sequence_analysis_table_iterate_tables(sharkd_session_seq_analysis_cb, &i); - printf("]"); + sharkd_json_array_close(); printf(",\"taps\":["); { printf("{\"name\":\"%s\",\"tap\":\"%s\"}", "RTP streams", "rtp-streams"); printf(",{\"name\":\"%s\",\"tap\":\"%s\"}", "Expert Information", "expert"); } - printf("]"); + sharkd_json_array_close(); printf(",\"eo\":["); i = 0; eo_iterate_tables(sharkd_export_object_visit_cb, &i); - printf("]"); + sharkd_json_array_close(); printf(",\"srt\":["); i = 0; srt_table_iterate_tables(sharkd_srt_visit_cb, &i); - printf("]"); + sharkd_json_array_close(); printf(",\"rtd\":["); i = 0; rtd_table_iterate_tables(sharkd_rtd_visit_cb, &i); - printf("]"); + sharkd_json_array_close(); printf(",\"follow\":["); i = 0; follow_iterate_followers(sharkd_follower_visit_cb, &i); - printf("]"); + sharkd_json_array_close(); printf("}\n"); } @@ -671,7 +695,7 @@ sharkd_session_process_analyse(void) printf(",\"protocols\":["); for (framenum = 1; framenum <= cfile.count; framenum++) sharkd_dissect_request(framenum, (framenum != 1) ? 1 : 0, framenum - 1, &sharkd_session_process_analyse_cb, SHARKD_DISSECT_FLAG_NULL, &analyser); - printf("]"); + sharkd_json_array_close(); if (analyser.first_time) printf(",\"first\":%.9f", nstime_to_sec(analyser.first_time)); @@ -838,7 +862,7 @@ sharkd_session_process_frames(const char *buf, const jsmntok_t *tokens, int coun return; } - printf("["); + sharkd_json_array_open(); for (framenum = 1; framenum <= cfile.count; framenum++) { frame_data *fdata; @@ -918,7 +942,7 @@ sharkd_session_process_frames(const char *buf, const jsmntok_t *tokens, int coun printf(",\"fg\":\"%x\"", color_t_to_rgb(&fdata->color_filter->fg_color)); } - printf("}"); + sharkd_json_object_close(); frame_sepa = ","; prev_dis_num = framenum; @@ -937,7 +961,7 @@ sharkd_session_process_tap_stats_node_cb(const stat_node *n) stat_node *node; const char *sepa = ""; - printf("["); + sharkd_json_array_open(); for (node = n->children; node; node = node->next) { /* code based on stats_tree_get_values_from_node() */ @@ -973,10 +997,10 @@ sharkd_session_process_tap_stats_node_cb(const stat_node *n) printf(",\"sub\":"); sharkd_session_process_tap_stats_node_cb(node); } - printf("}"); + sharkd_json_object_close(); sepa = ","; } - printf("]"); + sharkd_json_array_close(); } /** @@ -1077,10 +1101,10 @@ sharkd_session_process_tap_expert_cb(void *tapdata) json_puts_string(ei->protocol); } - printf("}"); + sharkd_json_object_close(); sepa = ","; } - printf("]"); + sharkd_json_array_close(); printf("},"); } @@ -1156,7 +1180,7 @@ sharkd_session_process_tap_flow_cb(void *tapdata) json_puts_string(addr_str); wmem_free(NULL, addr_str); } - printf("]"); + sharkd_json_array_close(); printf(",\"flows\":["); @@ -1182,11 +1206,11 @@ sharkd_session_process_tap_flow_cb(void *tapdata) json_puts_string(sai->comment); } - printf("}"); + sharkd_json_object_close(); sepa = ","; } - printf("]"); + sharkd_json_array_close(); printf("},"); } @@ -1453,10 +1477,10 @@ sharkd_session_process_tap_rtp_analyse_cb(void *tapdata) if (item->marker) printf(",\"mark\":1"); - printf("}"); + sharkd_json_object_close(); sepa = ","; } - printf("]"); + sharkd_json_array_close(); printf("},"); } @@ -1568,7 +1592,7 @@ sharkd_session_process_tap_conv_cb(void *arg) if (sharkd_session_geoip_addr(&(iui->dst_address), "2")) with_geoip = 1; - printf("}"); + sharkd_json_object_close(); } } else if (iu->hash.conv_array != NULL && !strncmp(iu->type, "endpt:", 6)) @@ -1607,7 +1631,7 @@ sharkd_session_process_tap_conv_cb(void *arg) if (sharkd_session_geoip_addr(&(host->myaddress), "")) with_geoip = 1; - printf("}"); + sharkd_json_object_close(); } } @@ -1661,14 +1685,14 @@ sharkd_session_process_tap_nstat_cb(void *arg) if (i) printf(","); - printf("{"); + sharkd_json_object_open(); printf("\"c\":"); json_puts_string(field->column_name); - printf("}"); + sharkd_json_object_close(); } - printf("]"); + sharkd_json_array_close(); printf(",\"tables\":["); for (i = 0; i < stat_data->stat_tap_data->tables->len; i++) @@ -1679,7 +1703,7 @@ sharkd_session_process_tap_nstat_cb(void *arg) if (i) printf(","); - printf("{"); + sharkd_json_object_open(); printf("\"t\":"); printf("\"%s\"", table->title); @@ -1729,11 +1753,11 @@ sharkd_session_process_tap_nstat_cb(void *arg) } } - printf("]"); + sharkd_json_array_close(); sepa = ","; } - printf("]"); - printf("}"); + sharkd_json_array_close(); + sharkd_json_object_close(); } printf("]},"); @@ -1838,7 +1862,7 @@ sharkd_session_process_tap_rtd_cb(void *arg) printf(",\"rsp_dup\":%u", ms->rsp_dup_num); } - printf("}"); + sharkd_json_object_close(); sepa = ","; } } @@ -1896,7 +1920,7 @@ sharkd_session_process_tap_srt_cb(void *arg) if (i) printf(","); - printf("{"); + sharkd_json_object_open(); printf("\"n\":"); if (rst->name) @@ -1941,7 +1965,7 @@ sharkd_session_process_tap_srt_cb(void *arg) printf(",\"max\":%.9f", nstime_to_sec(&proc->stats.max)); printf(",\"tot\":%.9f", nstime_to_sec(&proc->stats.tot)); - printf("}"); + sharkd_json_object_close(); sepa = ","; } printf("]}"); @@ -2028,7 +2052,7 @@ sharkd_session_process_tap_eo_cb(void *tapdata) printf(",\"len\":%" G_GINT64_FORMAT, eo_entry->payload_len); - printf("}"); + sharkd_json_object_close(); i++; } @@ -2117,7 +2141,7 @@ sharkd_session_process_tap_rtp_cb(void *arg) rtpstream_info_calc_free(&calc); - printf("}"); + sharkd_json_object_close(); sepa = ","; } printf("]},"); @@ -2537,7 +2561,7 @@ sharkd_session_process_follow(char *buf, const jsmntok_t *tokens, int count) sharkd_retap(); - printf("{"); + sharkd_json_object_open(); printf("\"err\":0"); @@ -2587,11 +2611,11 @@ sharkd_session_process_follow(char *buf, const jsmntok_t *tokens, int count) if (follow_record->is_server) printf(",\"s\":%d", 1); - printf("}"); + sharkd_json_object_close(); sepa = ","; } - printf("]"); + sharkd_json_array_close(); } printf("}\n"); @@ -2606,7 +2630,7 @@ sharkd_session_process_frame_cb_tree(epan_dissect_t *edt, proto_tree *tree, tvbu proto_node *node; const char *sepa = ""; - printf("["); + sharkd_json_array_open(); for (node = tree->first_child; node; node = node->next) { field_info *finfo = PNODE_FINFO(node); @@ -2707,10 +2731,10 @@ sharkd_session_process_frame_cb_tree(epan_dissect_t *edt, proto_tree *tree, tvbu sharkd_session_process_frame_cb_tree(edt, (proto_tree *) node, tvbs, display_hidden); } - printf("}"); + sharkd_json_object_close(); sepa = ","; } - printf("]"); + sharkd_json_array_close(); } static gboolean @@ -2732,7 +2756,7 @@ sharkd_follower_visit_layers_cb(const void *key _U_, void *value, void *user_dat printf(",[\"%s\",", layer_proto); json_puts_string(follow_filter); - printf("]"); + sharkd_json_array_close(); g_free(follow_filter); } @@ -2755,7 +2779,7 @@ sharkd_session_process_frame_cb(epan_dissect_t *edt, proto_tree *tree, struct ep const struct sharkd_frame_request_data * const req_data = (const struct sharkd_frame_request_data * const) data; const gboolean display_hidden = (req_data) ? req_data->display_hidden : FALSE; - printf("{"); + sharkd_json_object_open(); printf("\"err\":0"); @@ -2810,7 +2834,7 @@ sharkd_session_process_frame_cb(epan_dissect_t *edt, proto_tree *tree, struct ep printf("%s\"%s\"", (col) ? "," : "", col_item->col_data); } - printf("]"); + sharkd_json_array_close(); } if (fdata->flags.ignored) @@ -2884,7 +2908,7 @@ sharkd_session_process_frame_cb(epan_dissect_t *edt, proto_tree *tree, struct ep json_print_base64("", 0); } - printf("}"); + sharkd_json_object_close(); ds_sepa = ","; data_src = data_src->next; @@ -2892,12 +2916,12 @@ sharkd_session_process_frame_cb(epan_dissect_t *edt, proto_tree *tree, struct ep /* close ds, only if was opened */ if (ds_sepa != NULL) - printf("]"); + sharkd_json_array_close(); } printf(",\"fol\":[0"); follow_iterate_followers(sharkd_follower_visit_layers_cb, pi); - printf("]"); + sharkd_json_array_close(); printf("}\n"); } @@ -3065,7 +3089,7 @@ sharkd_session_process_iograph(char *buf, const jsmntok_t *tokens, int count) if (i) printf(","); - printf("{"); + sharkd_json_object_open(); if (graph->error) { @@ -3100,9 +3124,9 @@ sharkd_session_process_iograph(char *buf, const jsmntok_t *tokens, int count) next_idx = idx + 1; sepa = ","; } - printf("]"); + sharkd_json_array_close(); } - printf("}"); + sharkd_json_object_close(); remove_tap_listener(graph); g_free(graph->items); @@ -3467,7 +3491,7 @@ sharkd_session_process_complete(char *buf, const jsmntok_t *tokens, int count) printf(",\"n\":"); json_puts_string(protocol_name); } - printf("}"); + sharkd_json_object_close(); sepa = ","; } @@ -3494,13 +3518,13 @@ sharkd_session_process_complete(char *buf, const jsmntok_t *tokens, int count) json_puts_string(hfinfo->name); } } - printf("}"); + sharkd_json_object_close(); sepa = ","; } } } - printf("]"); + sharkd_json_array_close(); } if (tok_pref != NULL && tok_pref[0]) @@ -3532,7 +3556,7 @@ sharkd_session_process_complete(char *buf, const jsmntok_t *tokens, int count) prefs_modules_foreach(sharkd_session_process_complete_pref_cb, &data); } - printf("]"); + sharkd_json_array_close(); } @@ -3663,10 +3687,10 @@ sharkd_session_process_dumpconf_cb(pref_t *pref, gpointer d) printf(",\"d\":"); json_puts_string(enums->description); - printf("}"); + sharkd_json_object_close(); enum_sepa = ","; } - printf("]"); + sharkd_json_array_close(); break; } @@ -3693,7 +3717,7 @@ sharkd_session_process_dumpconf_cb(pref_t *pref, gpointer d) if (idx) printf(","); - printf("["); + sharkd_json_array_open(); for (colnum = 0; colnum < uat->ncols; colnum++) { char *str = uat_fld_tostr(rec, &(uat->fields[colnum])); @@ -3705,10 +3729,10 @@ sharkd_session_process_dumpconf_cb(pref_t *pref, gpointer d) g_free(str); } - printf("]"); + sharkd_json_array_close(); } - printf("]"); + sharkd_json_array_close(); break; } @@ -3725,7 +3749,7 @@ sharkd_session_process_dumpconf_cb(pref_t *pref, gpointer d) json_puts_string(prefs_get_title(pref)); #endif - printf("}"); + sharkd_json_object_close(); data->sepa = ","; return 0; /* continue */ |