Basic babeltrace integration
[lttv.git] / lttv / modules / text / batchAnalysis.c
index 3ee4d021fc6539c4f804b086fd2bac7596a8f99e..6d6bfe0a70ff754c7dcc5c02a2434b29a53e2163 100644 (file)
@@ -24,6 +24,7 @@
 #endif
 
 #include <glib.h>
+#include <unistd.h>
 #include <lttv/lttv.h>
 #include <lttv/attribute.h>
 #include <lttv/hook.h>
@@ -34,7 +35,9 @@
 #include <lttv/stats.h>
 #include <lttv/filter.h>
 #include <ltt/trace.h>
-#include <lttv/sync/sync_chain.h>
+#include <lttv/sync/sync_chain_lttv.h>
+
+#include <babeltrace/context.h>
 
 static LttvTraceset *traceset;
 
@@ -51,14 +54,33 @@ static LttvHooks
 static char *a_trace;
 
 static gboolean a_stats;
+static gboolean a_live;
+static int a_live_update_period;
+
+#define DEFAULT_LIVE_UPDATE_PERIOD 1
 
 void lttv_trace_option(void *hook_data)
 { 
-  LttTrace *trace;
-
-  trace = ltt_trace_open(a_trace);
+  //LttTrace *trace;
+  //trace_collection *trace;  
+  //format *fmt = bt_lookup_format(g_quark_from_static_string("ctf"));
+  /*
+  if(a_live) {
+    //trace = ltt_trace_open_live(a_trace);
+  } else {
+    bt_create_context();
+    //trace = bt_add_trace(a_trace,"ctf");
+  }
   if(trace == NULL) g_critical("cannot open trace %s", a_trace);
-  lttv_traceset_add(traceset, lttv_trace_new(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);
+    }
 }
 
 
@@ -68,7 +90,7 @@ static gboolean process_traceset(void *hook_data, void *call_data)
 
   LttvIAttribute *attributes = LTTV_IATTRIBUTE(lttv_global_attributes());
 
-  LttvTracesetStats *tscs;
+  LttvTracesetStats *tscs = NULL;
 
   LttvTracesetState *tss;
 
@@ -93,7 +115,7 @@ static gboolean process_traceset(void *hook_data, void *call_data)
 
   syncTraceset(tc);
 
-  lttv_state_add_event_hooks(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",
@@ -132,12 +154,21 @@ static gboolean process_traceset(void *hook_data, void *call_data)
   end.tv_nsec = G_MAXULONG;
 
   g_info("BatchAnalysis process traceset");
-
   lttv_process_traceset_seek_time(tc, start);
-  lttv_process_traceset_middle(tc,
-                               end,
-                               G_MAXULONG,
-                               NULL);
+  /* 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,
+                                                         end,
+                                                         G_MAXULONG,
+                                                         NULL);
+         
+         updated_count = lttv_process_traceset_update(tc); 
+               
+         sleep(a_live_update_period);
+  } while(count != 0 || updated_count > 0);
 
 
   //lttv_traceset_context_remove_hooks(tc,
@@ -186,6 +217,20 @@ static void init()
       "", 
       LTTV_OPT_NONE, &a_stats, NULL, NULL);
 
+  a_live = FALSE;
+  lttv_option_add("live", 0,
+      "define if the traceset is receiving live informations",
+      "",
+      LTTV_OPT_NONE, &a_live, NULL, NULL);
+  
+  a_live_update_period = DEFAULT_LIVE_UPDATE_PERIOD;
+  lttv_option_add("live-period", 0,
+                 "period to update a live trace",
+                 "in seconds",
+                 LTTV_OPT_INT,
+                 &a_live_update_period,
+                 NULL, NULL);
+
 
   traceset = lttv_traceset_new();
 
@@ -251,6 +296,8 @@ static void destroy()
 
   lttv_option_remove("trace");
   lttv_option_remove("stats");
+  lttv_option_remove("live");
+  lttv_option_remove("live-period");
 
   lttv_hooks_destroy(before_traceset);
   lttv_hooks_destroy(after_traceset);
This page took 0.025108 seconds and 4 git commands to generate.