[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r33104 - gnunet/src/core
From: |
gnunet |
Subject: |
[GNUnet-SVN] r33104 - gnunet/src/core |
Date: |
Thu, 17 Apr 2014 11:08:49 +0200 |
Author: grothoff
Date: 2014-04-17 11:08:49 +0200 (Thu, 17 Apr 2014)
New Revision: 33104
Added:
gnunet/src/core/core_api_monitor_peers.c
Removed:
gnunet/src/core/core_api_iterate_peers.c
Modified:
gnunet/src/core/Makefile.am
Log:
-rename file to match updated functionality
Modified: gnunet/src/core/Makefile.am
===================================================================
--- gnunet/src/core/Makefile.am 2014-04-16 17:34:36 UTC (rev 33103)
+++ gnunet/src/core/Makefile.am 2014-04-17 09:08:49 UTC (rev 33104)
@@ -22,7 +22,7 @@
libgnunetcore_la_SOURCES = \
core_api.c core.h \
- core_api_iterate_peers.c
+ core_api_monitor_peers.c
libgnunetcore_la_LIBADD = \
$(top_builddir)/src/util/libgnunetutil.la \
$(GN_LIBINTL) $(XLIB)
Deleted: gnunet/src/core/core_api_iterate_peers.c
===================================================================
--- gnunet/src/core/core_api_iterate_peers.c 2014-04-16 17:34:36 UTC (rev
33103)
+++ gnunet/src/core/core_api_iterate_peers.c 2014-04-17 09:08:49 UTC (rev
33104)
@@ -1,253 +0,0 @@
-/*
- This file is part of GNUnet.
- (C) 2009-2014 Christian Grothoff (and other contributing authors)
-
- GNUnet is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3, or (at your
- option) any later version.
-
- GNUnet is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-*/
-
-/**
- * @file core/core_api_monitor_peers.c
- * @brief implementation of the peer_iterate function
- * @author Christian Grothoff
- * @author Nathan Evans
- */
-#include "platform.h"
-#include "gnunet_core_service.h"
-#include "core.h"
-
-
-/**
- * Handle to a CORE monitoring operation.
- */
-struct GNUNET_CORE_MonitorHandle
-{
-
- /**
- * Our configuration.
- */
- const struct GNUNET_CONFIGURATION_Handle *cfg;
-
- /**
- * Our connection to the service.
- */
- struct GNUNET_CLIENT_Connection *client;
-
- /**
- * Handle for transmitting a request.
- */
- struct GNUNET_CLIENT_TransmitHandle *th;
-
- /**
- * Function called with the peer.
- */
- GNUNET_CORE_MonitorCallback peer_cb;
-
- /**
- * Closure for @e peer_cb.
- */
- void *peer_cb_cls;
-
-};
-
-
-/**
- * Transmits the monitor request to the CORE service.
- *
- * Function is called to notify a client about the socket begin ready
- * to queue more data. @a buf will be NULL and @a size zero if the
- * socket was closed for writing in the meantime.
- *
- * @param cls closure, our `struct GNUNET_CORE_MonitorHandle *`
- * @param size number of bytes available in @a buf
- * @param buf where the callee should write the message
- * @return number of bytes written to @a buf
- */
-static size_t
-transmit_monitor_request (void *cls,
- size_t size,
- void *buf);
-
-
-/**
- * Protocol error, reconnect to CORE service and notify
- * client.
- *
- * @param mh monitoring session to reconnect to CORE
- */
-static void
-reconnect (struct GNUNET_CORE_MonitorHandle *mh)
-{
- GNUNET_CLIENT_disconnect (mh->client);
- /* FIXME: use backoff? */
- mh->client = GNUNET_CLIENT_connect ("core", mh->cfg);
- GNUNET_assert (NULL != mh->client);
- mh->th =
- GNUNET_CLIENT_notify_transmit_ready (mh->client,
- sizeof (struct GNUNET_MessageHeader),
- GNUNET_TIME_UNIT_FOREVER_REL,
- GNUNET_YES,
- &transmit_monitor_request, mh);
- /* notify callback about reconnect */
- mh->peer_cb (mh->peer_cb_cls,
- NULL,
- GNUNET_CORE_KX_CORE_DISCONNECT,
- GNUNET_TIME_UNIT_FOREVER_ABS);
-}
-
-
-/**
- * Receive reply from CORE service with information about a peer.
- *
- * @param cls our `struct GNUNET_CORE_MonitorHandle *`
- * @param msg NULL on error or last entry
- */
-static void
-receive_info (void *cls,
- const struct GNUNET_MessageHeader *msg)
-{
- struct GNUNET_CORE_MonitorHandle *mh = cls;
- const struct MonitorNotifyMessage *mon_message;
- uint16_t msize;
-
- if (NULL == msg)
- {
- reconnect (mh);
- return;
- }
- msize = ntohs (msg->size);
- /* Handle incorrect message type or size, disconnect and clean up */
- if ((ntohs (msg->type) != GNUNET_MESSAGE_TYPE_CORE_MONITOR_NOTIFY) ||
- (sizeof (struct MonitorNotifyMessage) != msize))
- {
- GNUNET_break (0);
- reconnect (mh);
- return;
- }
- mon_message = (const struct MonitorNotifyMessage *) msg;
- GNUNET_CLIENT_receive (mh->client,
- &receive_info, mh,
- GNUNET_TIME_UNIT_FOREVER_REL);
- mh->peer_cb (mh->peer_cb_cls,
- &mon_message->peer,
- (enum GNUNET_CORE_KxState) ntohl (mon_message->state),
- GNUNET_TIME_absolute_ntoh (mon_message->timeout));
-}
-
-
-/**
- * Transmits the monitor request to the CORE service.
- *
- * Function is called to notify a client about the socket begin ready
- * to queue more data. @a buf will be NULL and @a size zero if the
- * socket was closed for writing in the meantime.
- *
- * @param cls closure, our `struct GNUNET_CORE_MonitorHandle *`
- * @param size number of bytes available in @a buf
- * @param buf where the callee should write the message
- * @return number of bytes written to @a buf
- */
-static size_t
-transmit_monitor_request (void *cls,
- size_t size,
- void *buf)
-{
- struct GNUNET_CORE_MonitorHandle *mh = cls;
- struct GNUNET_MessageHeader *msg;
- int msize;
-
- mh->th = NULL;
- msize = sizeof (struct GNUNET_MessageHeader);
- if ((size < msize) || (NULL == buf))
- {
- reconnect (mh);
- return 0;
- }
- msg = (struct GNUNET_MessageHeader *) buf;
- msg->size = htons (msize);
- msg->type = htons (GNUNET_MESSAGE_TYPE_CORE_MONITOR_PEERS);
- GNUNET_CLIENT_receive (mh->client,
- &receive_info, mh,
- GNUNET_TIME_UNIT_FOREVER_REL);
- return msize;
-}
-
-
-/**
- * Monitor connectivity and KX status of all peers known to CORE.
- * Calls @a peer_cb with the current status for each connected peer,
- * and then once with NULL to indicate that all peers that are
- * currently active have been handled. After that, the iteration
- * continues until it is cancelled. Normal users of the CORE API are
- * not expected to use this function. It is different in that it
- * truly lists all connections (including those where the KX is in
- * progress), not just those relevant to the application. This
- * function is used by special applications for diagnostics.
- *
- * @param cfg configuration handle
- * @param peer_cb function to call with the peer information
- * @param peer_cb_cls closure for @a peer_cb
- * @return NULL on error
- */
-struct GNUNET_CORE_MonitorHandle *
-GNUNET_CORE_monitor_start (const struct GNUNET_CONFIGURATION_Handle *cfg,
- GNUNET_CORE_MonitorCallback peer_cb,
- void *peer_cb_cls)
-{
- struct GNUNET_CORE_MonitorHandle *mh;
- struct GNUNET_CLIENT_Connection *client;
-
- GNUNET_assert (NULL != peer_cb);
- client = GNUNET_CLIENT_connect ("core", cfg);
- if (NULL == client)
- return NULL;
- mh = GNUNET_new (struct GNUNET_CORE_MonitorHandle);
- mh->cfg = cfg;
- mh->client = client;
- mh->peer_cb = peer_cb;
- mh->peer_cb_cls = peer_cb_cls;
- mh->th =
- GNUNET_CLIENT_notify_transmit_ready (client,
- sizeof (struct GNUNET_MessageHeader),
- GNUNET_TIME_UNIT_FOREVER_REL,
- GNUNET_YES,
- &transmit_monitor_request, mh);
- return mh;
-}
-
-
-/**
- * Stop monitoring CORE activity.
- *
- * @param mh monitor to stop
- */
-void
-GNUNET_CORE_monitor_stop (struct GNUNET_CORE_MonitorHandle *mh)
-{
- if (NULL != mh->th)
- {
- GNUNET_CLIENT_notify_transmit_ready_cancel (mh->th);
- mh->th = NULL;
- }
- if (NULL != mh->client)
- {
- GNUNET_CLIENT_disconnect (mh->client);
- mh->client = NULL;
- }
- GNUNET_free (mh);
-}
-
-
-/* end of core_api_monitor_peers.c */
Copied: gnunet/src/core/core_api_monitor_peers.c (from rev 33077,
gnunet/src/core/core_api_iterate_peers.c)
===================================================================
--- gnunet/src/core/core_api_monitor_peers.c (rev 0)
+++ gnunet/src/core/core_api_monitor_peers.c 2014-04-17 09:08:49 UTC (rev
33104)
@@ -0,0 +1,253 @@
+/*
+ This file is part of GNUnet.
+ (C) 2009-2014 Christian Grothoff (and other contributing authors)
+
+ GNUnet is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNUnet; see the file COPYING. If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+/**
+ * @file core/core_api_monitor_peers.c
+ * @brief implementation of the peer_iterate function
+ * @author Christian Grothoff
+ * @author Nathan Evans
+ */
+#include "platform.h"
+#include "gnunet_core_service.h"
+#include "core.h"
+
+
+/**
+ * Handle to a CORE monitoring operation.
+ */
+struct GNUNET_CORE_MonitorHandle
+{
+
+ /**
+ * Our configuration.
+ */
+ const struct GNUNET_CONFIGURATION_Handle *cfg;
+
+ /**
+ * Our connection to the service.
+ */
+ struct GNUNET_CLIENT_Connection *client;
+
+ /**
+ * Handle for transmitting a request.
+ */
+ struct GNUNET_CLIENT_TransmitHandle *th;
+
+ /**
+ * Function called with the peer.
+ */
+ GNUNET_CORE_MonitorCallback peer_cb;
+
+ /**
+ * Closure for @e peer_cb.
+ */
+ void *peer_cb_cls;
+
+};
+
+
+/**
+ * Transmits the monitor request to the CORE service.
+ *
+ * Function is called to notify a client about the socket begin ready
+ * to queue more data. @a buf will be NULL and @a size zero if the
+ * socket was closed for writing in the meantime.
+ *
+ * @param cls closure, our `struct GNUNET_CORE_MonitorHandle *`
+ * @param size number of bytes available in @a buf
+ * @param buf where the callee should write the message
+ * @return number of bytes written to @a buf
+ */
+static size_t
+transmit_monitor_request (void *cls,
+ size_t size,
+ void *buf);
+
+
+/**
+ * Protocol error, reconnect to CORE service and notify
+ * client.
+ *
+ * @param mh monitoring session to reconnect to CORE
+ */
+static void
+reconnect (struct GNUNET_CORE_MonitorHandle *mh)
+{
+ GNUNET_CLIENT_disconnect (mh->client);
+ /* FIXME: use backoff? */
+ mh->client = GNUNET_CLIENT_connect ("core", mh->cfg);
+ GNUNET_assert (NULL != mh->client);
+ mh->th =
+ GNUNET_CLIENT_notify_transmit_ready (mh->client,
+ sizeof (struct GNUNET_MessageHeader),
+ GNUNET_TIME_UNIT_FOREVER_REL,
+ GNUNET_YES,
+ &transmit_monitor_request, mh);
+ /* notify callback about reconnect */
+ mh->peer_cb (mh->peer_cb_cls,
+ NULL,
+ GNUNET_CORE_KX_CORE_DISCONNECT,
+ GNUNET_TIME_UNIT_FOREVER_ABS);
+}
+
+
+/**
+ * Receive reply from CORE service with information about a peer.
+ *
+ * @param cls our `struct GNUNET_CORE_MonitorHandle *`
+ * @param msg NULL on error or last entry
+ */
+static void
+receive_info (void *cls,
+ const struct GNUNET_MessageHeader *msg)
+{
+ struct GNUNET_CORE_MonitorHandle *mh = cls;
+ const struct MonitorNotifyMessage *mon_message;
+ uint16_t msize;
+
+ if (NULL == msg)
+ {
+ reconnect (mh);
+ return;
+ }
+ msize = ntohs (msg->size);
+ /* Handle incorrect message type or size, disconnect and clean up */
+ if ((ntohs (msg->type) != GNUNET_MESSAGE_TYPE_CORE_MONITOR_NOTIFY) ||
+ (sizeof (struct MonitorNotifyMessage) != msize))
+ {
+ GNUNET_break (0);
+ reconnect (mh);
+ return;
+ }
+ mon_message = (const struct MonitorNotifyMessage *) msg;
+ GNUNET_CLIENT_receive (mh->client,
+ &receive_info, mh,
+ GNUNET_TIME_UNIT_FOREVER_REL);
+ mh->peer_cb (mh->peer_cb_cls,
+ &mon_message->peer,
+ (enum GNUNET_CORE_KxState) ntohl (mon_message->state),
+ GNUNET_TIME_absolute_ntoh (mon_message->timeout));
+}
+
+
+/**
+ * Transmits the monitor request to the CORE service.
+ *
+ * Function is called to notify a client about the socket begin ready
+ * to queue more data. @a buf will be NULL and @a size zero if the
+ * socket was closed for writing in the meantime.
+ *
+ * @param cls closure, our `struct GNUNET_CORE_MonitorHandle *`
+ * @param size number of bytes available in @a buf
+ * @param buf where the callee should write the message
+ * @return number of bytes written to @a buf
+ */
+static size_t
+transmit_monitor_request (void *cls,
+ size_t size,
+ void *buf)
+{
+ struct GNUNET_CORE_MonitorHandle *mh = cls;
+ struct GNUNET_MessageHeader *msg;
+ int msize;
+
+ mh->th = NULL;
+ msize = sizeof (struct GNUNET_MessageHeader);
+ if ((size < msize) || (NULL == buf))
+ {
+ reconnect (mh);
+ return 0;
+ }
+ msg = (struct GNUNET_MessageHeader *) buf;
+ msg->size = htons (msize);
+ msg->type = htons (GNUNET_MESSAGE_TYPE_CORE_MONITOR_PEERS);
+ GNUNET_CLIENT_receive (mh->client,
+ &receive_info, mh,
+ GNUNET_TIME_UNIT_FOREVER_REL);
+ return msize;
+}
+
+
+/**
+ * Monitor connectivity and KX status of all peers known to CORE.
+ * Calls @a peer_cb with the current status for each connected peer,
+ * and then once with NULL to indicate that all peers that are
+ * currently active have been handled. After that, the iteration
+ * continues until it is cancelled. Normal users of the CORE API are
+ * not expected to use this function. It is different in that it
+ * truly lists all connections (including those where the KX is in
+ * progress), not just those relevant to the application. This
+ * function is used by special applications for diagnostics.
+ *
+ * @param cfg configuration handle
+ * @param peer_cb function to call with the peer information
+ * @param peer_cb_cls closure for @a peer_cb
+ * @return NULL on error
+ */
+struct GNUNET_CORE_MonitorHandle *
+GNUNET_CORE_monitor_start (const struct GNUNET_CONFIGURATION_Handle *cfg,
+ GNUNET_CORE_MonitorCallback peer_cb,
+ void *peer_cb_cls)
+{
+ struct GNUNET_CORE_MonitorHandle *mh;
+ struct GNUNET_CLIENT_Connection *client;
+
+ GNUNET_assert (NULL != peer_cb);
+ client = GNUNET_CLIENT_connect ("core", cfg);
+ if (NULL == client)
+ return NULL;
+ mh = GNUNET_new (struct GNUNET_CORE_MonitorHandle);
+ mh->cfg = cfg;
+ mh->client = client;
+ mh->peer_cb = peer_cb;
+ mh->peer_cb_cls = peer_cb_cls;
+ mh->th =
+ GNUNET_CLIENT_notify_transmit_ready (client,
+ sizeof (struct GNUNET_MessageHeader),
+ GNUNET_TIME_UNIT_FOREVER_REL,
+ GNUNET_YES,
+ &transmit_monitor_request, mh);
+ return mh;
+}
+
+
+/**
+ * Stop monitoring CORE activity.
+ *
+ * @param mh monitor to stop
+ */
+void
+GNUNET_CORE_monitor_stop (struct GNUNET_CORE_MonitorHandle *mh)
+{
+ if (NULL != mh->th)
+ {
+ GNUNET_CLIENT_notify_transmit_ready_cancel (mh->th);
+ mh->th = NULL;
+ }
+ if (NULL != mh->client)
+ {
+ GNUNET_CLIENT_disconnect (mh->client);
+ mh->client = NULL;
+ }
+ GNUNET_free (mh);
+}
+
+
+/* end of core_api_monitor_peers.c */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r33104 - gnunet/src/core,
gnunet <=