diff --git a/consumer/api/c/include/asapo/consumer_c.h b/consumer/api/c/include/asapo/consumer_c.h index 442e39aa466bc48d6c6b31807bfe30e8ac18f1f7..f7366a696be8654bfc85f0f637925d40d690fad0 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 2fe30a077f6aea87a3418c8d40ceb5caba6657e3..e5c28ef52deb167f3938bcabb9c5cb8905b9f853 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 21cfa29371457f206d53f607c6ff24490f7d16df..ed81afab911933054f4c398fd3ddf156540e3ab3 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; }