[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r36371 - in gnunet/src: include psyc psycstore
From: |
gnunet |
Subject: |
[GNUnet-SVN] r36371 - in gnunet/src: include psyc psycstore |
Date: |
Sat, 26 Sep 2015 19:09:48 +0200 |
Author: tg
Date: 2015-09-26 19:09:48 +0200 (Sat, 26 Sep 2015)
New Revision: 36371
Modified:
gnunet/src/include/gnunet_psycstore_plugin.h
gnunet/src/include/gnunet_psycstore_service.h
gnunet/src/psyc/gnunet-service-psyc.c
gnunet/src/psycstore/gnunet-service-psycstore.c
gnunet/src/psycstore/plugin_psycstore_sqlite.c
gnunet/src/psycstore/psycstore.h
gnunet/src/psycstore/psycstore_api.c
gnunet/src/psycstore/test_plugin_psycstore.c
gnunet/src/psycstore/test_psycstore.c
Log:
psycstore: add fragment_limit arg for message_get
Modified: gnunet/src/include/gnunet_psycstore_plugin.h
===================================================================
--- gnunet/src/include/gnunet_psycstore_plugin.h 2015-09-25 07:51:21 UTC
(rev 36370)
+++ gnunet/src/include/gnunet_psycstore_plugin.h 2015-09-26 17:09:48 UTC
(rev 36371)
@@ -154,6 +154,7 @@
const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
uint64_t first_fragment_id,
uint64_t last_fragment_id,
+ uint64_t fragment_limit,
uint64_t *returned_fragments,
GNUNET_PSYCSTORE_FragmentCallback cb,
void *cb_cls);
Modified: gnunet/src/include/gnunet_psycstore_service.h
===================================================================
--- gnunet/src/include/gnunet_psycstore_service.h 2015-09-25 07:51:21 UTC
(rev 36370)
+++ gnunet/src/include/gnunet_psycstore_service.h 2015-09-26 17:09:48 UTC
(rev 36371)
@@ -330,6 +330,8 @@
* First message ID to retrieve.
* @param last_message_id
* Last consecutive message ID to retrieve.
+ * @param fragment_limit
+ * Maximum number of fragments to retrieve.
* @param method_prefix
* Retrieve only messages with a matching method prefix.
* @param fragment_cb
@@ -347,6 +349,7 @@
const struct GNUNET_CRYPTO_EcdsaPublicKey
*slave_key,
uint64_t first_message_id,
uint64_t last_message_id,
+ uint64_t fragment_limit,
const char *method_prefix,
GNUNET_PSYCSTORE_FragmentCallback fragment_cb,
GNUNET_PSYCSTORE_ResultCallback result_cb,
Modified: gnunet/src/psyc/gnunet-service-psyc.c
===================================================================
--- gnunet/src/psyc/gnunet-service-psyc.c 2015-09-25 07:51:21 UTC (rev
36370)
+++ gnunet/src/psyc/gnunet-service-psyc.c 2015-09-26 17:09:48 UTC (rev
36371)
@@ -926,7 +926,7 @@
{
struct Channel *chn = cls;
GNUNET_PSYCSTORE_message_get (store, &chn->pub_key, slave_key,
- message_id, message_id, NULL,
+ message_id, message_id, 1, NULL,
&store_recv_fragment_replay,
&store_recv_fragment_replay_result, rh);
}
@@ -2432,7 +2432,7 @@
GNUNET_PSYCSTORE_message_get (store, &chn->pub_key, NULL,
GNUNET_ntohll (req->start_message_id),
GNUNET_ntohll (req->end_message_id),
- method_prefix,
+ 0, method_prefix,
&store_recv_fragment_history,
&store_recv_fragment_history_result, op);
else
Modified: gnunet/src/psycstore/gnunet-service-psycstore.c
===================================================================
--- gnunet/src/psycstore/gnunet-service-psycstore.c 2015-09-25 07:51:21 UTC
(rev 36370)
+++ gnunet/src/psycstore/gnunet-service-psycstore.c 2015-09-26 17:09:48 UTC
(rev 36371)
@@ -319,8 +319,10 @@
const struct FragmentGetRequest *
req = (const struct FragmentGetRequest *) msg;
struct SendClosure
- sc = { .op_id = req->op_id, .client = client,
- .channel_key = req->channel_key, .slave_key = req->slave_key,
+ sc = { .op_id = req->op_id,
+ .client = client,
+ .channel_key = req->channel_key,
+ .slave_key = req->slave_key,
.membership_test = req->do_membership_test };
int64_t ret;
@@ -332,10 +334,10 @@
if (0 == limit)
ret = db->fragment_get (db->cls, &req->channel_key,
first_fragment_id, last_fragment_id,
- &ret_frags, &send_fragment, &sc);
+ &ret_frags, send_fragment, &sc);
else
ret = db->fragment_get_latest (db->cls, &req->channel_key, limit,
- &ret_frags, &send_fragment, &sc);
+ &ret_frags, send_fragment, &sc);
switch (ret)
{
@@ -389,8 +391,10 @@
}
struct SendClosure
- sc = { .op_id = req->op_id, .client = client,
- .channel_key = req->channel_key, .slave_key = req->slave_key,
+ sc = { .op_id = req->op_id,
+ .client = client,
+ .channel_key = req->channel_key,
+ .slave_key = req->slave_key,
.membership_test = req->do_membership_test };
int64_t ret;
@@ -397,16 +401,17 @@
uint64_t ret_frags = 0;
uint64_t first_message_id = GNUNET_ntohll (req->first_message_id);
uint64_t last_message_id = GNUNET_ntohll (req->last_message_id);
- uint64_t limit = GNUNET_ntohll (req->message_limit);
+ uint64_t msg_limit = GNUNET_ntohll (req->message_limit);
+ uint64_t frag_limit = GNUNET_ntohll (req->fragment_limit);
/** @todo method_prefix */
- if (0 == limit)
+ if (0 == msg_limit)
ret = db->message_get (db->cls, &req->channel_key,
- first_message_id, last_message_id,
- &ret_frags, &send_fragment, &sc);
+ first_message_id, last_message_id, frag_limit,
+ &ret_frags, send_fragment, &sc);
else
- ret = db->message_get_latest (db->cls, &req->channel_key, limit,
- &ret_frags, &send_fragment, &sc);
+ ret = db->message_get_latest (db->cls, &req->channel_key, msg_limit,
+ &ret_frags, send_fragment, &sc);
switch (ret)
{
@@ -661,7 +666,7 @@
else
{
ret = db->message_get (db->cls, &req->channel_key,
- message_id, message_id,
+ message_id, message_id, 0,
&ret_frags, recv_state_fragment, &scls);
if (GNUNET_OK != ret)
{
Modified: gnunet/src/psycstore/plugin_psycstore_sqlite.c
===================================================================
--- gnunet/src/psycstore/plugin_psycstore_sqlite.c 2015-09-25 07:51:21 UTC
(rev 36370)
+++ gnunet/src/psycstore/plugin_psycstore_sqlite.c 2015-09-26 17:09:48 UTC
(rev 36371)
@@ -472,7 +472,8 @@
" multicast_flags, psycstore_flags, data\n"
"FROM messages\n"
"WHERE channel_id = (SELECT id FROM channels WHERE pub_key =
?)\n"
- " AND ? <= message_id AND message_id <= ?;",
+ " AND ? <= message_id AND message_id <= ?"
+ "LIMIT ?;",
&plugin->select_messages);
sql_prepare (plugin->dbh,
@@ -1195,6 +1196,7 @@
const struct GNUNET_CRYPTO_EddsaPublicKey *channel_key,
uint64_t first_message_id,
uint64_t last_message_id,
+ uint64_t fragment_limit,
uint64_t *returned_fragments,
GNUNET_PSYCSTORE_FragmentCallback cb,
void *cb_cls)
@@ -1208,7 +1210,11 @@
sizeof (*channel_key),
SQLITE_STATIC)
|| SQLITE_OK != sqlite3_bind_int64 (stmt, 2, first_message_id)
- || SQLITE_OK != sqlite3_bind_int64 (stmt, 3, last_message_id))
+ || SQLITE_OK != sqlite3_bind_int64 (stmt, 3, last_message_id)
+ || SQLITE_OK != sqlite3_bind_int64 (stmt, 4,
+ (0 != fragment_limit)
+ ? fragment_limit
+ : -1))
{
LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
"sqlite3_bind");
Modified: gnunet/src/psycstore/psycstore.h
===================================================================
--- gnunet/src/psycstore/psycstore.h 2015-09-25 07:51:21 UTC (rev 36370)
+++ gnunet/src/psycstore/psycstore.h 2015-09-26 17:09:48 UTC (rev 36371)
@@ -345,6 +345,11 @@
uint64_t message_limit GNUNET_PACKED;
/**
+ * Maximum number of fragments to retrieve.
+ */
+ uint64_t fragment_limit GNUNET_PACKED;
+
+ /**
* Do membership test with @a slave_key before returning fragment?
* #GNUNET_YES or #GNUNET_NO
*/
Modified: gnunet/src/psycstore/psycstore_api.c
===================================================================
--- gnunet/src/psycstore/psycstore_api.c 2015-09-25 07:51:21 UTC (rev
36370)
+++ gnunet/src/psycstore/psycstore_api.c 2015-09-26 17:09:48 UTC (rev
36371)
@@ -965,6 +965,8 @@
* First message ID to retrieve.
* @param last_message_id
* Last consecutive message ID to retrieve.
+ * @param fragment_limit
+ * Maximum number of fragments to retrieve.
* @param method_prefix
* Retrieve only messages with a matching method prefix.
* @todo Implement method_prefix query.
@@ -983,6 +985,7 @@
const struct GNUNET_CRYPTO_EcdsaPublicKey
*slave_key,
uint64_t first_message_id,
uint64_t last_message_id,
+ uint64_t fragment_limit,
const char *method_prefix,
GNUNET_PSYCSTORE_FragmentCallback fragment_cb,
GNUNET_PSYCSTORE_ResultCallback rcb,
@@ -1009,6 +1012,7 @@
req->channel_key = *channel_key;
req->first_message_id = GNUNET_htonll (first_message_id);
req->last_message_id = GNUNET_htonll (last_message_id);
+ req->fragment_limit = GNUNET_htonll (fragment_limit);
if (NULL != slave_key)
{
req->slave_key = *slave_key;
Modified: gnunet/src/psycstore/test_plugin_psycstore.c
===================================================================
--- gnunet/src/psycstore/test_plugin_psycstore.c 2015-09-25 07:51:21 UTC
(rev 36370)
+++ gnunet/src/psycstore/test_plugin_psycstore.c 2015-09-26 17:09:48 UTC
(rev 36371)
@@ -285,7 +285,7 @@
GNUNET_assert (
GNUNET_OK == db->message_get (db->cls, &channel_pub_key,
- message_id, message_id,
+ message_id, message_id, 0,
&ret_frags, fragment_cb, &fcls));
GNUNET_assert (fcls.n == 2 && ret_frags == 2);
Modified: gnunet/src/psycstore/test_psycstore.c
===================================================================
--- gnunet/src/psycstore/test_psycstore.c 2015-09-25 07:51:21 UTC (rev
36370)
+++ gnunet/src/psycstore/test_psycstore.c 2015-09-26 17:09:48 UTC (rev
36371)
@@ -378,7 +378,7 @@
fcls->n_expected = 3;
uint64_t message_id = GNUNET_ntohll (fcls->msg[0]->message_id);
op = GNUNET_PSYCSTORE_message_get (h, &channel_pub_key, &slave_pub_key,
- message_id, message_id, "",
+ message_id, message_id, 0, "",
&fragment_result,
&message_get_result, fcls);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r36371 - in gnunet/src: include psyc psycstore,
gnunet <=