--- /dev/null
+/*
+ This file is part of GNUnet.
+ Copyright (C) 2001-2011 GNUnet e.V.
+
+ 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., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+/**
+ * @author Markus Teich
+ * @file auction/auction.h
+ *
+ * @brief Common type definitions for the auction service and API.
+ */
+#ifndef AUCTION_H
+#define AUCTION_H
+
+#include "gnunet_common.h"
+
+GNUNET_NETWORK_STRUCT_BEGIN
+
+/**
+ * Auction creation request sent from the client to the service
+ */
+struct GNUNET_AUCTION_ClientCreateMessage
+{
+ /**
+ * Type: GNUNET_MESSAGE_TYPE_AUCTION_CLIENT_CREATE
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * When should the auction start
+ */
+ struct GNUNET_TIME_AbsoluteNBO time_start;
+
+ /**
+ * How long is each round allowed to be maximally
+ */
+ struct GNUNET_TIME_RelativeNBO time_round;
+
+ /**
+ * Auction parameter m.
+ * 0 for first price auctions.
+ * >0 for M+1st price auctions.
+ */
+ uint16_t m GNUNET_PACKED;
+
+ /**
+ * Should the auction outcome be public?
+ * 0 for private outcome auctions.
+ * 1 for public outcome auctions.
+ */
+ uint16_t outcome_public GNUNET_PACKED;
+
+ /**
+ * TODO: Price mapping.
+ */
+
+ /* DESCRIPTION text copied to end of this message */
+};
+
+GNUNET_NETWORK_STRUCT_END
+
+#endif
/**
* @file auction/gnunet-service-auction.c
- * @brief program that does auction
- * @author Christian Grothoff
+ * @brief service for executing auctions
+ * @author Markus Teich
*/
#include "platform.h"
#include "gnunet_util_lib.h"
+#include "auction.h"
+
+/**
+ * Check AUCTION CREATE messages from the client.
+ *
+ * @param cls the client we received this message from
+ * @param msg the actual message received
+ * @return #GNUNET_OK (always)
+ */
+static int
+check_create (void *cls, const struct GNUNET_AUCTION_ClientCreateMessage *msg)
+{
+ /* always well-formed due to arbitrary length description */
+ return GNUNET_OK;
+}
+
+
+/**
+ * Handler for CREATE messages.
+ *
+ * @param cls the client we received this message from
+ * @param msg the actual message received
+ */
+static void
+handle_create (void *cls, const struct GNUNET_AUCTION_ClientCreateMessage *msg)
+{
+ struct GNUNET_SERVICE_Client *client = cls;
+// struct GNUNET_MQ_Handle *mq;
+// struct GNUNET_MQ_Envelope *env;
+// struct GNUNET_AUCTION_blabla em;
+ uint16_t size;
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Received CREATE message from client\n");
+
+ size = ntohs (msg->header.size);
+
+ /**TODO: create auction and return auction object */
+// mq = GNUNET_SERVICE_client_get_mq (client);
+// setup_info_message (&em);
+// env = GNUNET_MQ_msg_copy (&em.header);
+// GNUNET_MQ_send (mq, env);
+
+ GNUNET_SERVICE_client_continue (client);
+}
+
/**
* Task run during shutdown.
*/
static void *
client_connect_cb (void *cls,
- struct GNUNET_SERVICE_Client *c,
- struct GNUNET_MQ_Handle *mq)
+ struct GNUNET_SERVICE_Client *c,
+ struct GNUNET_MQ_Handle *mq)
{
return c;
}
*/
static void
client_disconnect_cb (void *cls,
- struct GNUNET_SERVICE_Client *c,
- void *internal_cls)
+ struct GNUNET_SERVICE_Client *c,
+ void *internal_cls)
{
GNUNET_assert (c == internal_cls);
}
*/
static void
run (void *cls,
- const struct GNUNET_CONFIGURATION_Handle *cfg,
- struct GNUNET_SERVICE_Handle *service)
+ const struct GNUNET_CONFIGURATION_Handle *cfg,
+ struct GNUNET_SERVICE_Handle *service)
{
/* FIXME: do setup here */
- GNUNET_SCHEDULER_add_shutdown (&cleanup_task,
- NULL);
+ GNUNET_SCHEDULER_add_shutdown (&cleanup_task, NULL);
}
&client_connect_cb,
&client_disconnect_cb,
NULL,
+ GNUNET_MQ_hd_var_size (create,
+ GNUNET_MESSAGE_TYPE_AUCTION_CLIENT_CREATE,
+ struct GNUNET_AUCTION_ClientCreateMessage,
+ NULL),
GNUNET_MQ_handler_end ())