From c0b6f577cb6866a8bfce22acbcec6983d5f610f6 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 29 Dec 2021 18:22:37 +0100 Subject: -updating block plugins to new API --- src/set/plugin_block_set_test.c | 88 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 86 insertions(+), 2 deletions(-) (limited to 'src/set') diff --git a/src/set/plugin_block_set_test.c b/src/set/plugin_block_set_test.c index 1de086092..3d66831bb 100644 --- a/src/set/plugin_block_set_test.c +++ b/src/set/plugin_block_set_test.c @@ -65,6 +65,87 @@ block_plugin_set_test_evaluate (void *cls, } +/** + * Function called to validate a query. + * + * @param cls closure + * @param ctx block context + * @param type block type + * @param query original query (hash) + * @param xquery extrended query data (can be NULL, depending on type) + * @param xquery_size number of bytes in @a xquery + * @return #GNUNET_OK if the query is fine, #GNUNET_NO if not + */ +static enum GNUNET_GenericReturnValue +block_plugin_set_test_check_query (void *cls, + enum GNUNET_BLOCK_Type type, + const struct GNUNET_HashCode *query, + const void *xquery, + size_t xquery_size) +{ + return GNUNET_OK; +} + + +/** + * Function called to validate a block for storage. + * + * @param cls closure + * @param type block type + * @param query key for the block (hash), must match exactly + * @param block block data to validate + * @param block_size number of bytes in @a block + * @return #GNUNET_OK if the block is fine, #GNUNET_NO if not + */ +static enum GNUNET_GenericReturnValue +block_plugin_set_test_check_block (void *cls, + enum GNUNET_BLOCK_Type type, + const struct GNUNET_HashCode *query, + const void *block, + size_t block_size) +{ + if ((NULL == block) || + (0 == block_size) || + (0 != ((char *) block)[0])) + return GNUNET_SYSERR; + return GNUNET_OK; +} + + +/** + * Function called to validate a reply to a request. Note that it is assumed + * that the reply has already been matched to the key (and signatures checked) + * as it would be done with the GetKeyFunction and the + * BlockEvaluationFunction. + * + * @param cls closure + * @param type block type + * @param group which block group to use for evaluation + * @param query original query (hash) + * @param xquery extrended query data (can be NULL, depending on type) + * @param xquery_size number of bytes in @a xquery + * @param reply_block response to validate + * @param reply_block_size number of bytes in @a reply_block + * @return characterization of result + */ +static enum GNUNET_BLOCK_ReplyEvaluationResult +block_plugin_set_test_check_reply (void *cls, + enum GNUNET_BLOCK_Type type, + struct GNUNET_BLOCK_Group *group, + const struct GNUNET_HashCode *query, + const void *xquery, + size_t xquery_size, + const void *reply_block, + size_t reply_block_size) +{ + if ((NULL == reply_block) || + (0 == reply_block_size) || + (0 != ((char *) reply_block)[0])) + return GNUNET_BLOCK_REPLY_INVALID; + return GNUNET_BLOCK_REPLY_OK_MORE; +} + + /** * Function called to obtain the key for a block. * @@ -76,7 +157,7 @@ block_plugin_set_test_evaluate (void *cls, * @return #GNUNET_OK on success, #GNUNET_SYSERR if type not supported * (or if extracting a key from a block of this type does not work) */ -static int +static enum GNUNET_GenericReturnValue block_plugin_set_test_get_key (void *cls, enum GNUNET_BLOCK_Type type, const void *block, @@ -93,7 +174,7 @@ block_plugin_set_test_get_key (void *cls, void * libgnunet_plugin_block_set_test_init (void *cls) { - static enum GNUNET_BLOCK_Type types[] = { + static const enum GNUNET_BLOCK_Type types[] = { GNUNET_BLOCK_TYPE_SET_TEST, GNUNET_BLOCK_TYPE_ANY /* end of list */ }; @@ -102,6 +183,9 @@ libgnunet_plugin_block_set_test_init (void *cls) api = GNUNET_new (struct GNUNET_BLOCK_PluginFunctions); api->evaluate = &block_plugin_set_test_evaluate; api->get_key = &block_plugin_set_test_get_key; + api->check_query = &block_plugin_set_test_check_query; + api->check_block = &block_plugin_set_test_check_block; + api->check_reply = &block_plugin_set_test_check_reply; api->types = types; return api; } -- cgit v1.2.3