aboutsummaryrefslogtreecommitdiff
path: root/src/peerstore/peerstore_common.c
diff options
context:
space:
mode:
authorOmar Tarabai <tarabai@devegypt.com>2014-05-16 16:45:43 +0000
committerOmar Tarabai <tarabai@devegypt.com>2014-05-16 16:45:43 +0000
commit3c9e8b1b0f7f83f27fefb02bd67b481c67cad0c8 (patch)
tree525ae2f8cec03f298783aa693d465f789171cf51 /src/peerstore/peerstore_common.c
parentaeaf5c97d7d115d99f30e86be66c622b7a6ebf4f (diff)
downloadgnunet-3c9e8b1b0f7f83f27fefb02bd67b481c67cad0c8.tar.gz
gnunet-3c9e8b1b0f7f83f27fefb02bd67b481c67cad0c8.zip
peerstore API now uses MQ
Diffstat (limited to 'src/peerstore/peerstore_common.c')
-rw-r--r--src/peerstore/peerstore_common.c63
1 files changed, 61 insertions, 2 deletions
diff --git a/src/peerstore/peerstore_common.c b/src/peerstore/peerstore_common.c
index 6b8b80985..6c91d9802 100644
--- a/src/peerstore/peerstore_common.c
+++ b/src/peerstore/peerstore_common.c
@@ -36,7 +36,7 @@
36 * @param expiry absolute time after which the record expires 36 * @param expiry absolute time after which the record expires
37 * @param msg_type message type to be set in header 37 * @param msg_type message type to be set in header
38 * @return pointer to record message struct 38 * @return pointer to record message struct
39 */ 39 *
40struct StoreRecordMessage * 40struct StoreRecordMessage *
41PEERSTORE_create_record_message(const char *sub_system, 41PEERSTORE_create_record_message(const char *sub_system,
42 const struct GNUNET_PeerIdentity *peer, 42 const struct GNUNET_PeerIdentity *peer,
@@ -83,6 +83,64 @@ PEERSTORE_create_record_message(const char *sub_system,
83 memcpy(dummy, value, value_size); 83 memcpy(dummy, value, value_size);
84 return srm; 84 return srm;
85 85
86}*/
87
88/**
89 * Creates a MQ envelope for a single record
90 *
91 * @param sub_system sub system string
92 * @param peer Peer identity (can be NULL)
93 * @param key record key string (can be NULL)
94 * @param value record value BLOB (can be NULL)
95 * @param value_size record value size in bytes (set to 0 if value is NULL)
96 * @param expiry time after which the record expires
97 * @param msg_type message type to be set in header
98 * @return pointer to record message struct
99 */
100struct GNUNET_MQ_Envelope *
101PEERSTORE_create_record_mq_envelope(const char *sub_system,
102 const struct GNUNET_PeerIdentity *peer,
103 const char *key,
104 const void *value,
105 size_t value_size,
106 struct GNUNET_TIME_Absolute expiry,
107 uint16_t msg_type)
108{
109 struct StoreRecordMessage *srm;
110 struct GNUNET_MQ_Envelope *ev;
111 size_t ss_size;
112 size_t key_size;
113 size_t msg_size;
114 void *dummy;
115
116 ss_size = strlen(sub_system) + 1;
117 if(NULL == key)
118 key_size = 0;
119 else
120 key_size = strlen(key) + 1;
121 msg_size = ss_size +
122 key_size +
123 value_size;
124 ev = GNUNET_MQ_msg_extra(srm, msg_size, msg_type);
125 srm->key_size = htons(key_size);
126 srm->expiry = expiry;
127 if(NULL == peer)
128 srm->peer_set = htons(GNUNET_NO);
129 else
130 {
131 srm->peer_set = htons(GNUNET_YES);
132 srm->peer = *peer;
133 }
134 srm->sub_system_size = htons(ss_size);
135 srm->value_size = htons(value_size);
136 dummy = &srm[1];
137 memcpy(dummy, sub_system, ss_size);
138 dummy += ss_size;
139 memcpy(dummy, key, key_size);
140 dummy += key_size;
141 memcpy(dummy, value, value_size);
142
143 return ev;
86} 144}
87 145
88/** 146/**
@@ -118,7 +176,8 @@ PEERSTORE_parse_record_message(const struct GNUNET_MessageHeader *message)
118 record->peer = GNUNET_new(struct GNUNET_PeerIdentity); 176 record->peer = GNUNET_new(struct GNUNET_PeerIdentity);
119 memcpy(record->peer, &srm->peer, sizeof(struct GNUNET_PeerIdentity)); 177 memcpy(record->peer, &srm->peer, sizeof(struct GNUNET_PeerIdentity));
120 } 178 }
121 record->expiry = srm->expiry; 179 record->expiry = GNUNET_new(struct GNUNET_TIME_Absolute);
180 *(record->expiry) = srm->expiry;
122 dummy = (char *)&srm[1]; 181 dummy = (char *)&srm[1];
123 if(ss_size > 0) 182 if(ss_size > 0)
124 { 183 {