gnunet-svn
[Top][All Lists]
Advanced

[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);
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]