started implementing consensus api and service
[oweals/gnunet.git] / src / consensus / gnunet-service-consensus.cc
1 /*
2       This file is part of GNUnet
3       (C) 2012 Christian Grothoff (and other contributing authors)
4
5       GNUnet is free software; you can redistribute it and/or modify
6       it under the terms of the GNU General Public License as published
7       by the Free Software Foundation; either version 2, or (at your
8       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       General Public License for more details.
14
15       You should have received a copy of the GNU General Public License
16       along with GNUnet; see the file COPYING.  If not, write to the
17       Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18       Boston, MA 02111-1307, USA.
19  */
20
21
22 #include <cstdio>
23 #include <iostream>
24 #include <stdint.h>
25
26 #include "platform.h"
27 #include "gnunet_protocols.h"
28 #include "gnunet_common.h"
29 #include "gnunet_service_lib.h"
30 #include "gnunet_consensus_service.h"
31 #include "consensus.h"
32
33 using namespace std;
34
35
36
37 struct ConsensusSession
38 {
39
40 };
41
42
43
44 struct ConsensusClient
45 {
46
47 };
48
49
50
51 /**
52  * Called when a client wants to join a consensus session.
53  */
54 void
55 client_join (void *cls,
56              struct GNUNET_SERVER_Client *client,
57              const struct GNUNET_MessageHeader *message)
58 {
59   GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "client joined");
60 }
61
62
63 /**
64  * Called when a client performs an insert operation.
65  */
66 void
67 client_insert (void *cls,
68              struct GNUNET_SERVER_Client *client,
69              const struct GNUNET_MessageHeader *message)
70 {
71
72 }
73
74
75
76 /**
77  * Called when a client performs the conclude operation.
78  */
79 void
80 client_conclude (void *cls,
81              struct GNUNET_SERVER_Client *client,
82              const struct GNUNET_MessageHeader *message)
83 {
84
85 }
86
87
88
89 /**
90  * Process consensus requests.
91  *
92  * @param cls closure
93  * @param server the initialized server
94  * @param c configuration to use
95  */
96 static void
97 run (void *cls, struct GNUNET_SERVER_Handle *server, const struct GNUNET_CONFIGURATION_Handle *c)
98 {
99   static const struct GNUNET_SERVER_MessageHandler handlers[] = {
100     {&client_join, NULL, GNUNET_MESSAGE_TYPE_CONSENSUS_CLIENT_JOIN, 0},
101     {&client_insert, NULL, GNUNET_MESSAGE_TYPE_CONSENSUS_CLIENT_INSERT, 0},
102     {&client_conclude, NULL, GNUNET_MESSAGE_TYPE_CONSENSUS_CLIENT_CONCLUDE,
103         sizeof (struct GNUNET_CONSENSUS_ConcludeMessage)},
104     {NULL, NULL, 0, 0}
105   };
106
107   GNUNET_SERVER_add_handlers(server, handlers);
108 }
109
110
111 /**
112  * The main function for the statistics service.
113  *
114  * @param argc number of arguments from the command line
115  * @param argv command line arguments
116  * @return 0 ok, 1 on error
117  */
118 int
119 main (int argc, char *const *argv)
120 {
121   return (GNUNET_OK ==
122           GNUNET_SERVICE_run (argc, argv, "consensus", GNUNET_SERVICE_OPTION_NONE, &run, NULL)) ? 0 : 1;
123 }
124