-
-/**
- * Start monitoring performance information
- *
- * @param ph performance handle to use
- * @param monitor_cb function to call on performance changes
- * @param monitor_cb_cls closure for infocb
- * @return a performance monitor handle
- */
-struct GNUNET_ATS_PerformanceMonitorHandle *
-GNUNET_ATS_performance_monitor_start (struct GNUNET_ATS_PerformanceHandle * ph,
- GNUNET_ATS_PerformanceMonitorCb monitor_cb,
- void * monitor_cb_cls)
-{
- struct MonitorMessage *m;
- struct PendingMessage *p;
- GNUNET_assert (NULL != ph);
-
- if (NULL == monitor_cb)
- return NULL;
-
- struct GNUNET_ATS_PerformanceMonitorHandle *phm =
- GNUNET_malloc (sizeof (struct GNUNET_ATS_PerformanceMonitorHandle));
-
- ph->monitor_id ++;
- phm->id = ph->monitor_id;
- phm->ph = ph;
- phm->moncb = monitor_cb;
- phm->moncb_cls = monitor_cb_cls;
- GNUNET_CONTAINER_DLL_insert (ph->monitor_head, ph->monitor_tail, phm);
-
- p = GNUNET_malloc (sizeof (struct PendingMessage) +
- sizeof (struct MonitorMessage));
- p->size = sizeof (struct MonitorMessage);
- m = (struct MonitorMessage *) &p[1];
- m->header.type = htons (GNUNET_MESSAGE_TYPE_ATS_MONITOR);
- m->header.size = htons (sizeof (struct MonitorMessage));
- m->id = htonl (phm->id);
- m->op = htonl (GNUNET_YES);
- GNUNET_CONTAINER_DLL_insert_tail (ph->pending_head, ph->pending_tail, p);
- do_transmit (ph);
-
- return phm;
-}
-
-
-/**
- * Stop monitoring performance information
- *
- * @param phm performance monitor handle to use
- */
-void
-GNUNET_ATS_performance_monitor_stop (struct GNUNET_ATS_PerformanceMonitorHandle * phm)
-{
- struct MonitorMessage *m;
- struct PendingMessage *p;
-
- GNUNET_assert (NULL != phm);
-
- p = GNUNET_malloc (sizeof (struct PendingMessage) +
- sizeof (struct MonitorMessage));
- p->size = sizeof (struct MonitorMessage);
- m = (struct MonitorMessage *) &p[1];
- m->header.type = htons (GNUNET_MESSAGE_TYPE_ATS_MONITOR);
- m->header.size = htons (sizeof (struct MonitorMessage));
- m->id = htonl (phm->id);
- m->op = htonl (GNUNET_NO);
- GNUNET_CONTAINER_DLL_insert_tail (phm->ph->pending_head, phm->ph->pending_tail, p);
- do_transmit (phm->ph);
-
- GNUNET_CONTAINER_DLL_remove (phm->ph->monitor_head, phm->ph->monitor_tail, phm);
- GNUNET_free (phm);
-}
-