Traverse a path recursively to add all traces within
[lttv.git] / lttv / modules / text / batchAnalysis.c
index 6d6bfe0a70ff754c7dcc5c02a2434b29a53e2163..cfd2bab72bd4fbb994f60258e8f9caed3779bd39 100644 (file)
 #include <lttv/hook.h>
 #include <lttv/option.h>
 #include <lttv/module.h>
-#include <lttv/tracecontext.h>
+#include <lttv/traceset-process.h>
 #include <lttv/state.h>
+#ifdef BABEL_CLEANUP
 #include <lttv/stats.h>
 #include <lttv/filter.h>
+#endif
 #include <ltt/trace.h>
+#ifdef BABEL_CLEANUP_SYNC
 #include <lttv/sync/sync_chain_lttv.h>
-
+#endif
 #include <babeltrace/context.h>
 
 static LttvTraceset *traceset;
@@ -51,7 +54,7 @@ static LttvHooks
   *event_hook,
   *main_hooks;
 
-static char *a_trace;
+static char *trace_path;
 
 static gboolean a_stats;
 static gboolean a_live;
@@ -73,14 +76,10 @@ void lttv_trace_option(void *hook_data)
   }
   if(trace == NULL) g_critical("cannot open trace %s", a_trace);
   lttv_traceset_add(traceset, lttv_trace_new(trace));*/
-  if(bt_context_add_trace(lttv_traceset_get_context(traceset),
-                      a_trace,
-                      "ctf",
-                      NULL,
-                      NULL,
-                         NULL) < 0) {
-    printf("Cannot add trace %s", a_trace);
-    }
+
+  if(lttv_traceset_add_path(traceset, trace_path) < 0) {
+    g_error("Cannot add trace %s", trace_path);
+  }
 }
 
 
@@ -90,17 +89,18 @@ static gboolean process_traceset(void *hook_data, void *call_data)
 
   LttvIAttribute *attributes = LTTV_IATTRIBUTE(lttv_global_attributes());
 
+#ifdef BABEL_CLEANUP
   LttvTracesetStats *tscs = NULL;
 
   LttvTracesetState *tss;
 
   LttvTracesetContext *tc;
-
+#endif
   LttTime start, end;
   gboolean retval;
 
   g_info("BatchAnalysis begin process traceset");
-
+#ifdef BABEL_CLEANUP
   if (a_stats) {
     tscs = g_object_new(LTTV_TRACESET_STATS_TYPE, NULL);
     tss = &tscs->parent;
@@ -113,11 +113,13 @@ static gboolean process_traceset(void *hook_data, void *call_data)
 
   lttv_context_init(tc, traceset);
 
+
   syncTraceset(tc);
 
   lttv_state_add_event_hooks(tss);
   if(a_stats) lttv_stats_add_event_hooks(tscs);
 
+
   retval= lttv_iattribute_find_by_path(attributes, "filter/expression",
     LTTV_POINTER, &value_expression);
   g_assert(retval);
@@ -137,16 +139,16 @@ static gboolean process_traceset(void *hook_data, void *call_data)
   //g_debug("Filter string: %s",((GString*)*(value_expression.v_pointer))->str);
 
   lttv_filter_append_expression(*(value_filter.v_pointer),((GString*)*(value_expression.v_pointer))->str);
-  
+#endif  
   //lttv_traceset_context_add_hooks(tc,
   //before_traceset, after_traceset, NULL, before_trace, after_trace,
   //NULL, before_tracefile, after_tracefile, NULL, before_event, after_event);
-  lttv_process_traceset_begin(tc,
+
+  lttv_state_add_event_hooks(traceset);
+  lttv_process_traceset_begin(traceset,
                               before_traceset,
                               before_trace,
-                              before_tracefile,
-                              event_hook,
-                              NULL);
+                              event_hook);
 
   start.tv_sec = 0;
   start.tv_nsec = 0;
@@ -155,43 +157,49 @@ static gboolean process_traceset(void *hook_data, void *call_data)
 
   g_info("BatchAnalysis process traceset");
  
-  lttv_process_traceset_seek_time(tc, start);
+  lttv_process_traceset_seek_time(traceset, start);
   /* Read as long a we do not reach the end (0) */
   unsigned int count;
   unsigned int updated_count;
   do {
-         count = lttv_process_traceset_middle(tc,
+         count = lttv_process_traceset_middle(traceset,
                                                          end,
                                                          G_MAXULONG,
                                                          NULL);
          
-         updated_count = lttv_process_traceset_update(tc); 
+#ifdef BABEL_CLEANUP
+         updated_count = lttv_process_traceset_update(tc);
+#endif
                
          sleep(a_live_update_period);
-  } while(count != 0 || updated_count > 0);
+  } while(count != 0
+#ifdef BABEL_CLEANUP
+      || updated_count > 0
+#endif
+      );
 
 
   //lttv_traceset_context_remove_hooks(tc,
   //before_traceset, after_traceset, NULL, before_trace, after_trace,
   //NULL, before_tracefile, after_tracefile, NULL, before_event, after_event);
-  lttv_process_traceset_end(tc,
+  lttv_process_traceset_end(traceset,
                             after_traceset,
                             after_trace,
-                            after_tracefile,
-                            event_hook,
-                            NULL);
+                            event_hook);
 
   g_info("BatchAnalysis destroy context");
-
+#ifdef BABEL_CLEANUP
   lttv_filter_destroy(*(value_filter.v_pointer));
+
   lttv_state_remove_event_hooks(tss);
   if(a_stats) lttv_stats_remove_event_hooks(tscs);
+
   lttv_context_fini(tc);
   if (a_stats)
     g_object_unref(tscs);
   else
     g_object_unref(tss);
-
+#endif
   g_info("BatchAnalysis end process traceset");
   return FALSE;
 }
@@ -209,7 +217,7 @@ static void init()
   lttv_option_add("trace", 't', 
       "add a trace to the trace set to analyse", 
       "pathname of the directory containing the trace", 
-      LTTV_OPT_STRING, &a_trace, lttv_trace_option, NULL);
+      LTTV_OPT_STRING, &trace_path, lttv_trace_option, NULL);
 
   a_stats = FALSE;
   lttv_option_add("stats", 's', 
@@ -288,9 +296,11 @@ static void init()
 
 static void destroy()
 {
+#ifdef BABEL_CLEANUP
   guint i, nb;
 
   LttvTrace *trace;
+#endif
 
   g_info("Destroy batchAnalysis.c");
 
@@ -310,17 +320,18 @@ static void destroy()
   lttv_hooks_destroy(event_hook);
   lttv_hooks_remove_data(main_hooks, process_traceset, NULL);
 
+#ifdef BABEL_CLEANUP
   nb = lttv_traceset_number(traceset);
   for(i = 0 ; i < nb ; i++) {
     trace = lttv_traceset_get(traceset, i);
     ltt_trace_close(lttv_trace(trace));
-    /* This will be done by lttv_traceset_destroy */
-    //lttv_trace_destroy(trace);
+    lttv_trace_destroy(trace);
   }
-
+#endif
   lttv_traceset_destroy(traceset); 
 }
 
 LTTV_MODULE("batchAnalysis", "Batch processing of a trace", \
     "Run through a trace calling all the registered hooks", \
-    init, destroy, "state", "stats", "option","textFilter", "sync")
+    init, destroy, "state", "option")
+//TODO ybrosseau 2012-05-15 reenable textFilter, stats, sync
This page took 0.024935 seconds and 4 git commands to generate.