[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnunet] branch master updated: migrate testbed-logger to n
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnunet] branch master updated: migrate testbed-logger to new service API |
Date: |
Thu, 16 Mar 2017 03:27:17 +0100 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository gnunet.
The following commit(s) were added to refs/heads/master by this push:
new b3d3b62e7 migrate testbed-logger to new service API
b3d3b62e7 is described below
commit b3d3b62e704f85b0af505a9d074504d5fea93e7e
Author: Christian Grothoff <address@hidden>
AuthorDate: Thu Mar 16 03:27:16 2017 +0100
migrate testbed-logger to new service API
---
src/testbed-logger/gnunet-service-testbed-logger.c | 179 +++++++++------------
src/testbed-logger/test_testbed_logger_api.c | 4 +
2 files changed, 76 insertions(+), 107 deletions(-)
diff --git a/src/testbed-logger/gnunet-service-testbed-logger.c
b/src/testbed-logger/gnunet-service-testbed-logger.c
index 1c250b306..f915e70af 100644
--- a/src/testbed-logger/gnunet-service-testbed-logger.c
+++ b/src/testbed-logger/gnunet-service-testbed-logger.c
@@ -40,42 +40,6 @@
LOG (GNUNET_ERROR_TYPE_DEBUG, __VA_ARGS__)
/**
- * The message queue for sending messages to clients
- */
-struct MessageQueue
-{
- /**
- * The message to be sent
- */
- struct GNUNET_MessageHeader *msg;
-
- /**
- * The client to send the message to
- */
- struct GNUNET_SERVER_Client *client;
-
- /**
- * next pointer for DLL
- */
- struct MessageQueue *next;
-
- /**
- * prev pointer for DLL
- */
- struct MessageQueue *prev;
-};
-
-/**
- * The message queue head
- */
-static struct MessageQueue *mq_head;
-
-/**
- * The message queue tail
- */
-static struct MessageQueue *mq_tail;
-
-/**
* Handle for buffered writing.
*/
struct GNUNET_BIO_WriteHandle *bio;
@@ -92,23 +56,38 @@ static int in_shutdown;
/**
- * Message handler for #GNUNET_MESSAGE_TYPE_TESTBED_ADDHOST messages
+ * Check #GNUNET_MESSAGE_TYPE_TESTBED_LOGGER_MSG messages
*
- * @param cls NULL
- * @param client identification of the client
+ * @param cls client identification of the client
+ * @param msg the actual message
+ * @return #GNUNET_OK (they are all always OK)
+ */
+static int
+check_log_msg (void *cls,
+ const struct GNUNET_MessageHeader *msg)
+{
+ return GNUNET_OK;
+}
+
+
+/**
+ * Message handler for #GNUNET_MESSAGE_TYPE_TESTBED_LOGGER_MSG messages
+ *
+ * @param cls client identification of the client
* @param msg the actual message
*/
static void
handle_log_msg (void *cls,
- struct GNUNET_SERVER_Client *client,
const struct GNUNET_MessageHeader *msg)
{
+ struct GNUNET_SERVICE_Client *client = cls;
uint16_t ms;
- ms = ntohs (msg->size);
- ms -= sizeof (struct GNUNET_MessageHeader);
- GNUNET_BIO_write (bio, &msg[1], ms);
- GNUNET_SERVER_receive_done (client, GNUNET_OK);
+ ms = ntohs (msg->size) - sizeof (struct GNUNET_MessageHeader);
+ GNUNET_BIO_write (bio,
+ &msg[1],
+ ms);
+ GNUNET_SERVICE_client_continue (client);
}
@@ -120,69 +99,55 @@ handle_log_msg (void *cls,
static void
shutdown_task (void *cls)
{
- struct MessageQueue *mq_entry;
-
in_shutdown = GNUNET_YES;
if (0 != nconn)
{
/* Delay shutdown if there are active connections */
- GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL);
+ GNUNET_SCHEDULER_add_shutdown (&shutdown_task,
+ NULL);
return;
}
- while (NULL != (mq_entry = mq_head))
- {
- GNUNET_free (mq_entry->msg);
- GNUNET_SERVER_client_drop (mq_entry->client);
- GNUNET_CONTAINER_DLL_remove (mq_head,
- mq_tail,
- mq_entry);
- GNUNET_free (mq_entry);
- }
- GNUNET_break (GNUNET_OK == GNUNET_BIO_write_close (bio));
+ GNUNET_break (GNUNET_OK ==
+ GNUNET_BIO_write_close (bio));
}
/**
-x * Functions with this signature are called whenever a client
- * is disconnected on the network level.
+ * Callback called when a client connects to the service.
*
- * @param cls closure
- * @param client identification of the client; NULL
- * for the last call when the server is destroyed
+ * @param cls closure for the service
+ * @param c the new client that connected to the service
+ * @param mq the message queue used to send messages to the client
+ * @return @a c
*/
-static void
-client_disconnected (void *cls,
- struct GNUNET_SERVER_Client *client)
+static void *
+client_connect_cb (void *cls,
+ struct GNUNET_SERVICE_Client *c,
+ struct GNUNET_MQ_Handle *mq)
{
- if (NULL == client)
- {
- GNUNET_break (0 == nconn);
- return;
- }
- nconn--;
- if (GNUNET_YES == in_shutdown)
- GNUNET_SCHEDULER_shutdown ();
+ /* FIXME: is this really what we want here? */
+ GNUNET_SERVICE_client_persist (c);
+ nconn++;
+ return c;
}
/**
- * Functions with this signature are called whenever a client
- * is connected on the network level.
+ * Callback called when a client disconnected from the service
*
- * @param cls closure
- * @param client identification of the client
+ * @param cls closure for the service
+ * @param c the client that disconnected
+ * @param internal_cls should be equal to @a c
*/
static void
-client_connected (void *cls,
- struct GNUNET_SERVER_Client *client)
+client_disconnect_cb (void *cls,
+ struct GNUNET_SERVICE_Client *c,
+ void *internal_cls)
{
- if (NULL == client)
- {
- GNUNET_break (0 == nconn);
- return;
- }
- GNUNET_SERVER_client_persist_ (client);
- nconn++;
+ nconn--;
+ if (GNUNET_YES == in_shutdown)
+ GNUNET_SCHEDULER_shutdown ();
+ GNUNET_assert (c == internal_cls);
}
@@ -190,18 +155,14 @@ client_connected (void *cls,
* Testbed setup
*
* @param cls closure
- * @param server the initialized server
* @param cfg configuration to use
+ * @param service the initialized service
*/
static void
logger_run (void *cls,
- struct GNUNET_SERVER_Handle *server,
- const struct GNUNET_CONFIGURATION_Handle *cfg)
+ const struct GNUNET_CONFIGURATION_Handle *cfg,
+ struct GNUNET_SERVICE_Handle *service)
{
- static const struct GNUNET_SERVER_MessageHandler message_handlers[] = {
- {&handle_log_msg, NULL, GNUNET_MESSAGE_TYPE_TESTBED_LOGGER_MSG, 0},
- {NULL, NULL, 0, 0}
- };
char *dir;
char *fn;
char *hname;
@@ -223,7 +184,8 @@ logger_run (void *cls,
pid = getpid ();
hname_len = GNUNET_OS_get_hostname_max_length ();
hname = GNUNET_malloc (hname_len);
- if (0 != gethostname (hname, hname_len))
+ if (0 != gethostname (hname,
+ hname_len))
{
LOG (GNUNET_ERROR_TYPE_ERROR,
"Cannot get hostname. Exiting\n");
@@ -247,24 +209,27 @@ logger_run (void *cls,
return;
}
GNUNET_free (fn);
- GNUNET_SERVER_add_handlers (server, message_handlers);
- GNUNET_SERVER_connect_notify (server, &client_connected, NULL);
- GNUNET_SERVER_disconnect_notify (server, &client_disconnected, NULL);
- GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL);
+ GNUNET_SCHEDULER_add_shutdown (&shutdown_task,
+ NULL);
LOG_DEBUG ("TESTBED-LOGGER startup complete\n");
}
/**
- * The starting point of execution
+ * Define "main" method using service macro.
*/
-int
-main (int argc, char *const *argv)
-{
- return (GNUNET_OK ==
- GNUNET_SERVICE_run (argc, argv, "testbed-logger",
- GNUNET_SERVICE_OPTION_NONE,
- &logger_run, NULL)) ? 0 : 1;
-}
+GNUNET_SERVICE_MAIN
+("testbed-logger",
+ GNUNET_SERVICE_OPTION_NONE,
+ &logger_run,
+ &client_connect_cb,
+ &client_disconnect_cb,
+ NULL,
+ GNUNET_MQ_hd_var_size (log_msg,
+ GNUNET_MESSAGE_TYPE_TESTBED_LOGGER_MSG,
+ struct GNUNET_MessageHeader,
+ NULL),
+ GNUNET_MQ_handler_end ());
+
/* end of gnunet-service-testbed-logger.c */
diff --git a/src/testbed-logger/test_testbed_logger_api.c
b/src/testbed-logger/test_testbed_logger_api.c
index 0ebe0c3f4..e627feeb4 100644
--- a/src/testbed-logger/test_testbed_logger_api.c
+++ b/src/testbed-logger/test_testbed_logger_api.c
@@ -258,11 +258,15 @@ main (int argc, char **argv)
GNUNET_log_setup ("test-testbed-logger-api",
"WARNING",
NULL);
+ GNUNET_break (GNUNET_OK ==
+ GNUNET_DISK_directory_remove ("/tmp/test-testbed"));
ret = GNUNET_TESTING_service_run ("test-testbed-logger",
"testbed-logger",
"test_testbed_logger_api.conf",
&test_main,
NULL);
+ GNUNET_break (GNUNET_OK ==
+ GNUNET_DISK_directory_remove ("/tmp/test-testbed"));
if (0 != ret)
return 1;
if (GNUNET_OK != result)
--
To stop receiving notification emails like this one, please contact
address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [gnunet] branch master updated: migrate testbed-logger to new service API,
gnunet <=