diff options
author | Omar Tarabai <tarabai@devegypt.com> | 2014-05-16 16:45:43 +0000 |
---|---|---|
committer | Omar Tarabai <tarabai@devegypt.com> | 2014-05-16 16:45:43 +0000 |
commit | 3c9e8b1b0f7f83f27fefb02bd67b481c67cad0c8 (patch) | |
tree | 525ae2f8cec03f298783aa693d465f789171cf51 /src/peerstore/peerstore_common.c | |
parent | aeaf5c97d7d115d99f30e86be66c622b7a6ebf4f (diff) | |
download | gnunet-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.c | 63 |
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 | * |
40 | struct StoreRecordMessage * | 40 | struct StoreRecordMessage * |
41 | PEERSTORE_create_record_message(const char *sub_system, | 41 | PEERSTORE_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 | */ | ||
100 | struct GNUNET_MQ_Envelope * | ||
101 | PEERSTORE_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 | { |