-fix format warning
[oweals/gnunet.git] / src / peerstore / peerstore_common.h
index 93fb9931b02ea83b737e67f5d6ea24b12b9520bc..4b806bf912d3cc81801297728ec4b75c816314e4 100644 (file)
@@ -1,6 +1,6 @@
 /*
       This file is part of GNUnet
-      (C)
+      Copyright (C)
 
       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.
  */
 
 /**
  * @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
@@ -72,16 +44,39 @@ struct GNUNET_PEERSTORE_Record
  * @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 absolute time after which the record expires
+ * @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);
+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_Absolute *expiry,
+                                 uint16_t msg_type);
+
+/**
+ * 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 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 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
@@ -90,4 +85,12 @@ PEERSTORE_create_record_message(const char *sub_system,
  * @return Pointer to record or NULL if error
  */
 struct GNUNET_PEERSTORE_Record *
-PEERSTORE_parse_record_message(const struct GNUNET_MessageHeader *message);
+PEERSTORE_parse_record_message (const struct GNUNET_MessageHeader *message);
+
+/**
+ * Free any memory allocated for this record
+ *
+ * @param record
+ */
+void
+PEERSTORE_destroy_record (struct GNUNET_PEERSTORE_Record *record);