fix build issues
[oweals/gnunet.git] / src / peerstore / peerstore_common.h
index 93fb9931b02ea83b737e67f5d6ea24b12b9520bc..0fc14d9b4859fd7a2746c47739ad14e5de5c8182 100644 (file)
@@ -1,6 +1,6 @@
 /*
       This file is part of GNUnet
-      (C)
+      Copyright (C) 2013-2016 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
@@ -14,8 +14,8 @@
 
       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.
+      Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+      Boston, MA 02110-1301, USA.
  */
 
 /**
  * @brief Helper peerstore functions
  * @author Omar Tarabai
  */
-
+#include "platform.h"
 #include "peerstore.h"
 
 /**
- * PEERSTORE single record
+ * Creates a hash of the given key combination
+ *
  */
-struct GNUNET_PEERSTORE_Record
-{
-
-  /**
-   * Responsible sub system string
-   */
-  char *sub_system;
-
-  /**
-   * Peer Identity
-   */
-  struct GNUNET_PeerIdentity *peer;
-
-  /**
-   * Record key string
-   */
-  char *key;
-
-  /**
-   * Record value BLOB
-   */
-  void *value;
-
-  /**
-   * Size of value BLOB
-   */
-  size_t value_size;
-
-  /**
-   * Lifetime of record
-   */
-  struct GNUNET_TIME_Relative lifetime;
+void
+PEERSTORE_hash_key (const char *sub_system,
+                    const struct GNUNET_PeerIdentity *peer,
+                    const char *key,
+                    struct GNUNET_HashCode *ret);
 
-};
 
 /**
- * Creates a record message ready to be sent
+ * Creates a MQ envelope for a single record
  *
  * @param sub_system sub system string
  * @param peer Peer identity (can be NULL)
  * @param key record key string (can be NULL)
  * @param value record value BLOB (can be NULL)
  * @param value_size record value size in bytes (set to 0 if value is NULL)
- * @param lifetime relative time after which the record expires
+ * @param expiry time after which the record expires
+ * @param options options specific to the storage operation
+ * @param msg_type message type to be set in header
  * @return pointer to record message struct
  */
-struct StoreRecordMessage *
-PEERSTORE_create_record_message(const char *sub_system,
-    const struct GNUNET_PeerIdentity *peer,
-    const char *key,
-    const void *value,
-    size_t value_size,
-    struct GNUNET_TIME_Relative lifetime);
+struct GNUNET_MQ_Envelope *
+PEERSTORE_create_record_mq_envelope (const char *sub_system,
+                                     const struct GNUNET_PeerIdentity *peer,
+                                     const char *key,
+                                     const void *value,
+                                     size_t value_size,
+                                     struct GNUNET_TIME_Absolute expiry,
+                                     enum GNUNET_PEERSTORE_StoreOption options,
+                                     uint16_t msg_type);
+
 
 /**
  * Parses a message carrying a record
  *
- * @param message the actual message
- * @return Pointer to record or NULL if error
+ * @param srm the actual message
+ * @return Pointer to record or NULL on error
  */
 struct GNUNET_PEERSTORE_Record *
-PEERSTORE_parse_record_message(const struct GNUNET_MessageHeader *message);
+PEERSTORE_parse_record_message (const struct StoreRecordMessage *srm);
+
+
+/**
+ * Free any memory allocated for this record
+ *
+ * @param record
+ */
+void
+PEERSTORE_destroy_record (struct GNUNET_PEERSTORE_Record *record);
+
+/* end of peerstore_common.h */