[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r34297 - gnunet/src/sensor
From: |
gnunet |
Subject: |
[GNUnet-SVN] r34297 - gnunet/src/sensor |
Date: |
Thu, 18 Sep 2014 19:10:50 +0200 |
Author: otarabai
Date: 2014-09-18 19:10:50 +0200 (Thu, 18 Sep 2014)
New Revision: 34297
Modified:
gnunet/src/sensor/gnunet-sensor-profiler.c
gnunet/src/sensor/gnunet-service-sensor_analysis.c
Log:
sensor: profiler prompts for peer reconnection
Modified: gnunet/src/sensor/gnunet-sensor-profiler.c
===================================================================
--- gnunet/src/sensor/gnunet-sensor-profiler.c 2014-09-17 21:51:42 UTC (rev
34296)
+++ gnunet/src/sensor/gnunet-sensor-profiler.c 2014-09-18 17:10:50 UTC (rev
34297)
@@ -76,7 +76,16 @@
};
+struct ConnectionContext
+{
+ struct PeerInfo *p1;
+
+ struct PeerInfo *p2;
+
+};
+
+
/**
* Name of the configuration file used
*/
@@ -192,6 +201,26 @@
/**
+ * Destroy a DisconnectionContext struct
+ */
+static void
+destroy_dc (struct DisconnectionContext *dc)
+{
+ if (NULL != dc->blacklist)
+ {
+ GNUNET_TRANSPORT_blacklist_cancel (dc->blacklist);
+ dc->blacklist = NULL;
+ }
+ if (NULL != dc->p1_transport_op)
+ {
+ GNUNET_TESTBED_operation_done (dc->p1_transport_op);
+ dc->p1_transport_op = NULL;
+ }
+ GNUNET_free (dc);
+}
+
+
+/**
* Do clean up and shutdown scheduler
*/
static void
@@ -210,17 +239,7 @@
while (NULL != dc)
{
GNUNET_CONTAINER_DLL_remove (dc_head, dc_tail, dc);
- if (NULL != dc->blacklist)
- {
- GNUNET_TRANSPORT_blacklist_cancel (dc->blacklist);
- dc->blacklist = NULL;
- }
- if (NULL != dc->p1_transport_op)
- {
- GNUNET_TESTBED_operation_done (dc->p1_transport_op);
- dc->p1_transport_op = NULL;
- }
- GNUNET_free (dc);
+ destroy_dc (dc);
dc = dc_head;
}
if (NULL != peerstore_op)
@@ -384,8 +403,72 @@
/**************************** END DISCONNECT PEERS ***************************/
/*****************************************************************************/
+/*****************************************************************************/
+/******************************* CONNECT PEERS *******************************/
+/*****************************************************************************/
/**
+ * Callback to be called when overlay connection operation is completed
+ *
+ * @param cls the callback closure from functions generating an operation
+ * @param op the operation that has been finished
+ * @param emsg error message in case the operation has failed; will be NULL if
+ * operation has executed successfully.
+ */
+static void
+overlay_connect_cb (void *cls, struct GNUNET_TESTBED_Operation *op,
+ const char *emsg)
+{
+ struct ConnectionContext *cc = cls;
+
+ if (NULL != emsg)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "ERROR: %s.\n", emsg);
+ GNUNET_assert (0);
+ }
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer connection request sent: %d,%d\n",
+ cc->p1->index, cc->p2->index);
+ GNUNET_free (cc);
+ GNUNET_TESTBED_operation_done (op);
+}
+
+
+/**
+ * Connect two peers together
+ */
+static void
+connect_peers (struct PeerInfo *p1, struct PeerInfo *p2)
+{
+ struct DisconnectionContext *dc;
+ struct ConnectionContext *cc;
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "connect_peers()\n");
+ /* Check if we have a disconnection request before */
+ dc = dc_head;
+ while (NULL != dc)
+ {
+ if ((dc->p1 == p1 && dc->p2 == p2) || (dc->p1 == p2 && dc->p2 == p1))
+ break;
+ dc = dc_head->next;
+ }
+ if (NULL != dc)
+ {
+ GNUNET_CONTAINER_DLL_remove (dc_head, dc_tail, dc);
+ destroy_dc (dc);
+ }
+ /* Connect peers using testbed */
+ cc = GNUNET_new (struct ConnectionContext);
+ cc->p1 = p1;
+ cc->p2 = p2;
+ GNUNET_TESTBED_overlay_connect (cc, &overlay_connect_cb, cc,
+ p1->testbed_peer, p2->testbed_peer);
+}
+
+/*****************************************************************************/
+/****************************** END CONNECT PEERS ****************************/
+/*****************************************************************************/
+
+/**
* Function called with each file/folder inside a directory that is being
copied.
*
* @param cls closure, destination directory
@@ -630,6 +713,35 @@
/**
+ * Prompty the user to reconnect two peers
+ */
+static void
+prompt_peer_reconnection (void *cls, const struct GNUNET_SCHEDULER_TaskContext
*tc)
+{
+ int p1;
+ int p2;
+ char line[10];
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Connect peers (e.g. '0,2') or empty line to execute:\n");
+ if (NULL == fgets (line, sizeof (line), stdin) || 1 == strlen (line))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Continuing.\n");
+ return;
+ }
+ if (2 != sscanf (line, "%d,%d", &p1, &p2) || p1 >= num_peers ||
+ p2 >= num_peers || p1 < 0 || p2 < 0 || p1 == p2)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Invalid input.\n");
+ prompt_peer_reconnection (NULL, NULL);
+ return;
+ }
+ connect_peers (&all_peers_info[p1], &all_peers_info[p2]);
+ prompt_peer_reconnection (NULL, NULL);
+}
+
+
+/**
* Prompt the user to disconnect two peers
*/
static void
@@ -643,7 +755,8 @@
"Disconnect peers (e.g. '0,2') or empty line to execute:\n");
if (NULL == fgets (line, sizeof (line), stdin) || 1 == strlen (line))
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Continuing.\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Will prompt for reconnection in 1
min.\n");
+ GNUNET_SCHEDULER_add_delayed
(GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MINUTES, 1)
,&prompt_peer_reconnection, NULL);
return;
}
if (2 != sscanf (line, "%d,%d", &p1, &p2) || p1 >= num_peers ||
Modified: gnunet/src/sensor/gnunet-service-sensor_analysis.c
===================================================================
--- gnunet/src/sensor/gnunet-service-sensor_analysis.c 2014-09-17 21:51:42 UTC
(rev 34296)
+++ gnunet/src/sensor/gnunet-service-sensor_analysis.c 2014-09-18 17:10:50 UTC
(rev 34297)
@@ -213,7 +213,8 @@
{
model->anomalous = GNUNET_YES;
LOG (GNUNET_ERROR_TYPE_WARNING,
- "Anomaly state started for sensor `%s'.\n", model->sensor->name);
+ "Anomaly state started for sensor `%s', value: %f.\n",
+ model->sensor->name, val);
SENSOR_reporting_anomaly_update (model->sensor, model->anomalous);
}
}
@@ -225,8 +226,9 @@
model->negative_count >= confirmation_count)
{
model->anomalous = GNUNET_NO;
- LOG (GNUNET_ERROR_TYPE_INFO, "Anomaly state stopped for sensor `%s'.\n",
- model->sensor->name);
+ LOG (GNUNET_ERROR_TYPE_INFO,
+ "Anomaly state stopped for sensor `%s', value: %f.\n",
+ model->sensor->name, val);
SENSOR_reporting_anomaly_update (model->sensor, model->anomalous);
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r34297 - gnunet/src/sensor,
gnunet <=