From 2121daffa3bcd8abbc9052baeb12d4be14a41787 Mon Sep 17 00:00:00 2001 From: Sergey Yakubov <sergey.yakubov@desy.de> Date: Tue, 6 Jul 2021 15:50:06 +0200 Subject: [PATCH] Consumer C API - create asapo string from C string --- consumer/api/c/include/asapo/consumer_c.h | 4 ++++ consumer/api/cpp/src/consumer_c_glue.cpp | 9 +++++++++ tests/automatic/consumer/consumer_api/consumer_api.c | 7 +++++++ 3 files changed, 20 insertions(+) diff --git a/consumer/api/c/include/asapo/consumer_c.h b/consumer/api/c/include/asapo/consumer_c.h index 442e39aa4..f7366a696 100644 --- a/consumer/api/c/include/asapo/consumer_c.h +++ b/consumer/api/c/include/asapo/consumer_c.h @@ -66,6 +66,10 @@ AsapoBool asapo_is_error(AsapoErrorHandle err); AsapoStringHandle asapo_consumer_generate_new_group_id(AsapoConsumerHandle consumer, AsapoErrorHandle* err); const char* asapo_string_c_str(const AsapoStringHandle str); + +AsapoStringHandle asapo_string_from_c_str(const char* str); + + size_t asapo_string_size(const AsapoStringHandle str); void asapo_consumer_set_timeout(AsapoConsumerHandle consumer, uint64_t timeout_ms); diff --git a/consumer/api/cpp/src/consumer_c_glue.cpp b/consumer/api/cpp/src/consumer_c_glue.cpp index 2fe30a077..e5c28ef52 100644 --- a/consumer/api/cpp/src/consumer_c_glue.cpp +++ b/consumer/api/cpp/src/consumer_c_glue.cpp @@ -245,6 +245,15 @@ extern "C" { return static_cast<AsapoStringHandle>(handle_or_null(retval, error, std::move(err))); } +//! creates AsapoStringHandle from C-String +/// \param[in] str C-string +/// \return AsapoStringHandle + AsapoStringHandle asapo_string_from_c_str(const char* str) { + auto retval = new AsapoHandlerHolder<std::string> {new std::string{str}}; + return static_cast<AsapoStringHandle>(retval); + } + + //! give a pointer to the content of the asapoString /// \param[in] str the handle of the asapoString in question /// \return const char pointer to the content diff --git a/tests/automatic/consumer/consumer_api/consumer_api.c b/tests/automatic/consumer/consumer_api/consumer_api.c index 21cfa2937..ed81afab9 100644 --- a/tests/automatic/consumer/consumer_api/consumer_api.c +++ b/tests/automatic/consumer/consumer_api/consumer_api.c @@ -262,6 +262,11 @@ int main(int argc, char* argv[]) { &err); EXIT_IF_ERROR("create consumer", err); + AsapoStringHandle group_id2 = asapo_string_from_c_str("hello"); + printf("%s\n",asapo_string_c_str(group_id2)); +// ASSERT_EQ_STRING("hello",asapo_string_c_str(group_id2),"asapo str <-> string"); + + asapo_consumer_set_timeout(consumer, 1000ull); @@ -280,10 +285,12 @@ int main(int argc, char* argv[]) { test_datasets(consumer,group_id); } + asapo_free_handle(&err); asapo_free_handle(&cred); asapo_free_handle(&consumer); asapo_free_handle(&group_id); + asapo_free_handle(&group_id2); return EXIT_SUCCESS; } -- GitLab