WiP
[oweals/gnunet.git] / src / monkey / gnunet_monkey_action.h
index da8f8539684d9cdd8fa11316ca3b0955c7c344f5..dd96a03a5cf1e3e2a150939d717c7a358963f03e 100644 (file)
@@ -26,6 +26,8 @@
 #ifndef GNUNET_MONKEY_ACTION_H
 #define GNUNET_MONKEY_ACTION_H
 
+#include "gdbmi.h"
+
 #ifdef __cplusplus
 extern "C"
 {
@@ -34,11 +36,43 @@ extern "C"
 #endif
 #endif
 
-int GNUNET_MONKEY_ACTION_report_file();
-int GNUNET_MONKEY_ACTION_report_email();
-int GNUNET_MONKEY_ACTION_rerun_with_valgrind();
-int GNUNET_MONKEY_ACTION_rerun_with_gdb();
-int GNUNET_MONKEY_ACTION_check_bug_redundancy();
+
+/* Debug constants */
+#define DEBUG_MODE_GDB 0
+#define GDB_STATE_STOPPED 1
+#define GDB_STATE_EXIT_NORMALLY 2
+#define GDB_STATE_ERROR 3
+#define DEBUG_MODE_VALGRIND 4
+#define DEBUG_MODE_REPORT_READY 5
+
+
+/**
+ * Context for the Action API
+ */
+struct GNUNET_MONKEY_ACTION_Context
+{
+       const char* binary_name;
+       const char* email_address;
+       const char* expression_database_path;
+       const char* gdb_binary_path;
+       int debug_mode;
+       char* debug_report;
+
+       /* gdb debugging attributes */
+       mi_h *gdb_handle;
+       const char* gdb_in_use;
+       mi_stop* gdb_stop_reason;
+       mi_frames* gdb_frames;
+};
+
+
+int GNUNET_MONKEY_ACTION_report_file(struct GNUNET_MONKEY_ACTION_Context* cntxt, const char* dumpFileName);
+int GNUNET_MONKEY_ACTION_report_email(struct GNUNET_MONKEY_ACTION_Context* cntxt);
+int GNUNET_MONKEY_ACTION_rerun_with_valgrind(void);
+int GNUNET_MONKEY_ACTION_inspect_expression_database(struct GNUNET_MONKEY_ACTION_Context* cntxt);
+int GNUNET_MONKEY_ACTION_rerun_with_gdb(struct GNUNET_MONKEY_ACTION_Context* cntxt);
+int GNUNET_MONKEY_ACTION_format_report(struct GNUNET_MONKEY_ACTION_Context* cntxt);
+int GNUNET_MONKEY_ACTION_check_bug_redundancy(void);
 
 
 #if 0                          /* keep Emacsens' auto-indent happy */