aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Lamping <ulf.lamping@web.de>2005-12-03 18:15:02 +0000
committerUlf Lamping <ulf.lamping@web.de>2005-12-03 18:15:02 +0000
commit0a2188eed69c6c6e3000bd17d7da9cc1ea20e7a8 (patch)
tree8a2f27a371b786e914881b59b3b8cfc8ef4a64fb
parent6674e5bf12f2794ba3b5710ef72b6410e14c5d6e (diff)
add missing functions (to complete/cleanup of interface):
capture_input_drops capture_input_error_message and move the functionality from capture_sync.c to capture.c (just where it belongs) svn path=/trunk/; revision=16663
-rw-r--r--capture.c33
-rw-r--r--capture.h10
-rw-r--r--capture_sync.c10
3 files changed, 43 insertions, 10 deletions
diff --git a/capture.c b/capture.c
index 2b6ab53779..8de503c853 100644
--- a/capture.c
+++ b/capture.c
@@ -255,6 +255,7 @@ capture_input_new_file(capture_options *capture_opts, gchar *new_file)
/* free the old filename */
if(capture_opts->save_file != NULL) {
/* we start a new capture file, close the old one (if we had one before) */
+ /* (we can only have an open capture file in real_time_mode!) */
if( ((capture_file *) capture_opts->cf)->state != FILE_CLOSED) {
cf_callback_invoke(cf_cb_live_capture_update_finished, capture_opts->cf);
cf_finish_tail(capture_opts->cf, &err);
@@ -308,9 +309,7 @@ capture_input_new_packets(capture_options *capture_opts, int to_read)
g_assert(capture_opts->save_file);
if(capture_opts->real_time_mode) {
- /* Read from the capture file the number of records the child told us
- it added.
- XXX - do something if this fails? */
+ /* Read from the capture file the number of records the child told us it added. */
switch (cf_continue_tail(capture_opts->cf, to_read, &err)) {
case CF_READ_OK:
@@ -335,6 +334,34 @@ capture_input_new_packets(capture_options *capture_opts, int to_read)
}
+/* Capture child told us, how many dropped packets it counted.
+ */
+void
+capture_input_drops(capture_options *capture_opts, int dropped)
+{
+ g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_INFO, "%d packet%s dropped", dropped, plurality(dropped, "", "s"));
+
+ g_assert(capture_opts->state == CAPTURE_RUNNING);
+
+ cf_set_drops_known(capture_opts->cf, TRUE);
+ cf_set_drops(capture_opts->cf, dropped);
+}
+
+
+/* Capture child told us, that an error has occurred while starting the capture. */
+void
+capture_input_error_message(capture_options *capture_opts, char *error_message)
+{
+ g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_MESSAGE, "Error message from child: \"%s\"", error_message);
+
+ g_assert(capture_opts->state == CAPTURE_PREPARING);
+
+ simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", error_message);
+
+ /* the capture child will close the sync_pipe, nothing to do for now */
+}
+
+
/* capture child closed it's side ot the pipe, do the required cleanup */
void
capture_input_closed(capture_options *capture_opts)
diff --git a/capture.h b/capture.h
index ce90327acb..14e27345f8 100644
--- a/capture.h
+++ b/capture.h
@@ -140,6 +140,16 @@ extern gboolean capture_input_new_file(capture_options *capture_opts, gchar *new
extern void capture_input_new_packets(capture_options *capture_opts, int to_read);
/**
+ * Capture child told us, how many dropped packets it counted.
+ */
+extern void capture_input_drops(capture_options *capture_opts, int dropped);
+
+/**
+ * Capture child told us, that an error has occurred while starting the capture.
+ */
+extern void capture_input_error_message(capture_options *capture_opts, char *error_message);
+
+/**
* Capture child closed it's side ot the pipe, do the required cleanup.
*/
extern void capture_input_closed(capture_options *capture_opts);
diff --git a/capture_sync.c b/capture_sync.c
index 37189c46f4..888f4dbceb 100644
--- a/capture_sync.c
+++ b/capture_sync.c
@@ -621,14 +621,13 @@ sync_pipe_input_cb(gint source, gpointer user_data)
/* We weren't able to open the new capture file; user has been
alerted. Close the sync pipe. */
- /* XXX - is it safe to close the pipe inside this callback? */
eth_close(source);
/* the child has send us a filename which we couldn't open.
this probably means, the child is creating files faster than we can handle it.
this should only be the case for very fast file switches
we can't do much more than telling the child to stop
- (this is the emergency brake if user e.g. wants to switch files every second) */
+ (this is the "emergency brake" if user e.g. wants to switch files every second) */
sync_pipe_stop(capture_opts);
}
break;
@@ -638,14 +637,11 @@ sync_pipe_input_cb(gint source, gpointer user_data)
capture_input_new_packets(capture_opts, nread);
break;
case SP_ERROR_MSG:
- g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_MESSAGE, "Error message from child: \"%s\"", buffer);
- simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", buffer);
+ capture_input_error_message(capture_opts, buffer);
/* the capture child will close the sync_pipe, nothing to do for now */
break;
case SP_DROPS:
- g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_INFO, "%d packet%s dropped", atoi(buffer), plurality(atoi(buffer), "", "s"));
- cf_set_drops_known(capture_opts->cf, TRUE);
- cf_set_drops(capture_opts->cf, atoi(buffer));
+ capture_input_drops(capture_opts, atoi(buffer));
break;
default:
g_assert_not_reached();