*/
struct GNUNET_STATISTICS_Handle
{
- /**
- * Our scheduler.
- */
- struct GNUNET_SCHEDULER_Handle *sched;
-
/**
* Name of our subsystem.
*/
unsigned int i;
if (ret->client != NULL)
return GNUNET_YES;
- ret->client = GNUNET_CLIENT_connect (ret->sched, "statistics", ret->cfg);
+ ret->client = GNUNET_CLIENT_connect ("statistics", ret->cfg);
if (ret->client != NULL)
{
for (i=0;i<ret->watches_size;i++)
#if DEBUG_STATISTICS
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Received valid statistic on `%s:%s': %llu\n",
- service, name, GNUNET_ntohll (smsg->abs_value));
+ service, name, GNUNET_ntohll (smsg->value));
#endif
if (GNUNET_OK !=
h->current->proc (h->current->cls,
finish (handle, GNUNET_SYSERR);
return 0;
}
+#if DEBUG_STATISTICS
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Transmitting watch request for `%s'\n",
+ handle->current->name);
+#endif
slen1 = strlen (handle->current->subsystem) + 1;
slen2 = strlen (handle->current->name) + 1;
msize = slen1 + slen2 + sizeof (struct GNUNET_MessageHeader);
2,
handle->current->subsystem,
handle->current->name));
- if (! handle->receiving)
+ if (GNUNET_YES != handle->receiving)
{
handle->receiving = GNUNET_YES;
GNUNET_CLIENT_receive (handle->client,
handle,
GNUNET_TIME_UNIT_FOREVER_REL);
}
+ finish (handle, GNUNET_OK);
return msize;
}
/**
* Get handle for the statistics service.
*
- * @param sched scheduler to use
* @param subsystem name of subsystem using the service
* @param cfg services configuration in use
* @return handle to use
*/
struct GNUNET_STATISTICS_Handle *
-GNUNET_STATISTICS_create (struct GNUNET_SCHEDULER_Handle *sched,
- const char *subsystem,
+GNUNET_STATISTICS_create (const char *subsystem,
const struct GNUNET_CONFIGURATION_Handle *cfg)
{
struct GNUNET_STATISTICS_Handle *ret;
GNUNET_assert (subsystem != NULL);
- GNUNET_assert (sched != NULL);
GNUNET_assert (cfg != NULL);
ret = GNUNET_malloc (sizeof (struct GNUNET_STATISTICS_Handle));
- ret->sched = sched;
ret->cfg = cfg;
ret->subsystem = GNUNET_strdup (subsystem);
ret->backoff = GNUNET_TIME_UNIT_MILLISECONDS;
- try_connect (ret);
+ if (GNUNET_YES != try_connect (ret))
+ {
+ GNUNET_free (ret->subsystem);
+ GNUNET_free (ret);
+ return NULL;
+ }
return ret;
}
struct GNUNET_TIME_Relative timeout;
int i;
+ if (h == NULL) return;
if (GNUNET_SCHEDULER_NO_TASK != h->backoff_task)
- GNUNET_SCHEDULER_cancel (h->sched,
- h->backoff_task);
+ GNUNET_SCHEDULER_cancel (h->backoff_task);
if (sync_first)
{
if (h->current != NULL)
return; /* action already pending */
if (GNUNET_YES != try_connect (h))
{
- h->backoff_task = GNUNET_SCHEDULER_add_delayed (h->sched,
- h->backoff,
+ h->backoff_task = GNUNET_SCHEDULER_add_delayed (h->backoff,
&finish_task,
h);
h->backoff = GNUNET_TIME_relative_multiply (h->backoff, 2);
}
}
+
/**
* Get statistic from the peer.
*
{
struct GNUNET_STATISTICS_WatchEntry *w;
+ if (handle == NULL)
+ return GNUNET_SYSERR;
w = GNUNET_malloc (sizeof (struct GNUNET_STATISTICS_WatchEntry));
w->subsystem = GNUNET_strdup (subsystem);
w->name = GNUNET_strdup (name);