glitch in the license text detected by hyazinthe, thank you!
[oweals/gnunet.git] / src / template / gnunet-service-template.c
1 /*
2      This file is part of GNUnet.
3      Copyright (C) 2009 GNUnet e.V.
4
5      GNUnet is free software: you can redistribute it and/or modify it
6      under the terms of the GNU Affero General Public License as published
7      by the Free Software Foundation, either version 3 of the License,
8      or (at your option) any later version.
9
10      GNUnet is distributed in the hope that it will be useful, but
11      WITHOUT ANY WARRANTY; without even the implied warranty of
12      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13      Affero General Public License for more details.
14 */
15
16 /**
17  * @file template/gnunet-service-template.c
18  * @brief program that does template
19  * @author Christian Grothoff
20  */
21 #include "platform.h"
22 #include "gnunet_util_lib.h"
23
24
25 /**
26  * Task run during shutdown.
27  *
28  * @param cls unused
29  */
30 static void
31 cleanup_task (void *cls)
32 {
33   /* FIXME: do clean up here */
34 }
35
36
37 /**
38  * Callback called when a client connects to the service.
39  *
40  * @param cls closure for the service
41  * @param c the new client that connected to the service
42  * @param mq the message queue used to send messages to the client
43  * @return @a c
44  */
45 static void *
46 client_connect_cb (void *cls,
47                    struct GNUNET_SERVICE_Client *c,
48                    struct GNUNET_MQ_Handle *mq)
49 {
50   return c;
51 }
52
53
54 /**
55  * Callback called when a client disconnected from the service
56  *
57  * @param cls closure for the service
58  * @param c the client that disconnected
59  * @param internal_cls should be equal to @a c
60  */
61 static void
62 client_disconnect_cb (void *cls,
63                       struct GNUNET_SERVICE_Client *c,
64                       void *internal_cls)
65 {
66   GNUNET_assert (c == internal_cls);
67 }
68
69
70 /**
71  * Process template requests.
72  *
73  * @param cls closure
74  * @param cfg configuration to use
75  * @param service the initialized service
76  */
77 static void
78 run (void *cls,
79      const struct GNUNET_CONFIGURATION_Handle *cfg,
80      struct GNUNET_SERVICE_Handle *service)
81 {
82   /* FIXME: do setup here */
83   GNUNET_SCHEDULER_add_shutdown (&cleanup_task,
84                                  NULL);
85 }
86
87
88 /**
89  * Define "main" method using service macro.
90  */
91 GNUNET_SERVICE_MAIN
92 ("template",
93  GNUNET_SERVICE_OPTION_NONE,
94  &run,
95  &client_connect_cb,
96  &client_disconnect_cb,
97  NULL,
98  GNUNET_MQ_handler_end ());
99
100
101 /* end of gnunet-service-template.c */