diff options
author | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2017-12-07 21:56:11 +0100 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2017-12-08 03:16:20 +0000 |
commit | 0baa4458c5780b143ad4479d387202ddf4add06f (patch) | |
tree | 7cac9589c670186f123268c30c3db1fad9a05268 /sharkd_session.c | |
parent | 847585f938a525fb32ee4a0227cc500316facc34 (diff) |
sharkd: add sharkd_get_frame() to get frame_data, optimize.
Add sharkd_get_frame() wrapper to limit number of cfile usage.
Don't get frame_data when not needed.
Change-Id: I24b96b5b184196e9dbf632c0891b2954c8281eed
Reviewed-on: https://code.wireshark.org/review/24728
Petri-Dish: Jakub Zawadzki <darkjames-ws@darkjames.pl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'sharkd_session.c')
-rw-r--r-- | sharkd_session.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/sharkd_session.c b/sharkd_session.c index e348ae34a4..61d218fac8 100644 --- a/sharkd_session.c +++ b/sharkd_session.c @@ -845,7 +845,7 @@ sharkd_session_process_frames(const char *buf, const jsmntok_t *tokens, int coun printf("["); for (framenum = 1; framenum <= cfile.count; framenum++) { - frame_data *fdata = frame_data_sequence_find(cfile.frame_set_info.frames, framenum); + frame_data *fdata; if (filter_data && !(filter_data[framenum / 8] & (1 << (framenum % 8)))) continue; @@ -856,7 +856,9 @@ sharkd_session_process_frames(const char *buf, const jsmntok_t *tokens, int coun continue; } - sharkd_dissect_columns(framenum, cinfo, (fdata->color_filter == NULL)); + fdata = sharkd_get_frame(framenum); + + sharkd_dissect_columns(fdata, cinfo, (fdata->color_filter == NULL)); printf("%s{\"c\":[", frame_sepa); for (col = 0; col < cinfo->num_cols; ++col) @@ -2938,7 +2940,7 @@ sharkd_session_process_intervals(char *buf, const jsmntok_t *tokens, int count) guint64 bytes; } st, st_total; - nstime_t *start_ts = NULL; + nstime_t *start_ts; guint32 interval_ms = 1000; /* default: one per second */ @@ -2973,18 +2975,19 @@ sharkd_session_process_intervals(char *buf, const jsmntok_t *tokens, int count) printf("{\"intervals\":["); + start_ts = (cfile.count >= 1) ? &(sharkd_get_frame(1)->abs_ts) : NULL; + for (framenum = 1; framenum <= cfile.count; framenum++) { - frame_data *fdata = frame_data_sequence_find(cfile.frame_set_info.frames, framenum); + frame_data *fdata; gint64 msec_rel; gint64 new_idx; - if (start_ts == NULL) - start_ts = &fdata->abs_ts; - if (filter_data && !(filter_data[framenum / 8] & (1 << (framenum % 8)))) continue; + fdata = sharkd_get_frame(framenum); + msec_rel = (fdata->abs_ts.secs - start_ts->secs) * (gint64) 1000 + (fdata->abs_ts.nsecs - start_ts->nsecs) / 1000000; new_idx = msec_rel / interval_ms; @@ -3312,7 +3315,7 @@ sharkd_session_process_setcomment(char *buf, const jsmntok_t *tokens, int count) if (!tok_frame || !ws_strtou32(tok_frame, NULL, &framenum) || framenum == 0) return; - fdata = frame_data_sequence_find(cfile.frame_set_info.frames, framenum); + fdata = sharkd_get_frame(framenum); if (!fdata) return; |