From 484878aec33d356bad665ab9d9dccbb90c394f4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Mon, 21 Feb 2022 15:59:05 -0500 Subject: [PATCH] c: add missing value apis --- c/opendht.cpp | 10 ++++++++++ c/opendht_c.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/c/opendht.cpp b/c/opendht.cpp index ad885153..feac7f52 100644 --- a/c/opendht.cpp +++ b/c/opendht.cpp @@ -97,10 +97,20 @@ const char* dht_value_get_user_type(const dht_value* data) { return vsp->user_type.c_str(); } +void dht_value_set_user_type(dht_value* data, const char* user_type) { + (*reinterpret_cast<ValueSp*>(data))->user_type = user_type; +} + dht_value* dht_value_new(const uint8_t* data, size_t size) { return reinterpret_cast<dht_value*>(new ValueSp(std::make_shared<dht::Value>(data, size))); } +dht_value* dht_value_new_from_string(const char* str) { + ValueSp value = std::make_shared<dht::Value>((const uint8_t*)str, strlen(str)); + value->user_type = "text/plain"; + return reinterpret_cast<dht_value*>(new ValueSp(std::move(value))); +} + dht_value* dht_value_ref(const dht_value* v) { return reinterpret_cast<dht_value*>(new ValueSp(*reinterpret_cast<const ValueSp*>(v))); } diff --git a/c/opendht_c.h b/c/opendht_c.h index be856cbb..691c8624 100644 --- a/c/opendht_c.h +++ b/c/opendht_c.h @@ -82,6 +82,7 @@ struct OPENDHT_C_PUBLIC dht_value; typedef struct dht_value dht_value; typedef uint64_t dht_value_id; OPENDHT_C_PUBLIC dht_value* dht_value_new(const uint8_t* data, size_t size); +OPENDHT_C_PUBLIC dht_value* dht_value_new_from_string(const char* str); OPENDHT_C_PUBLIC dht_value* dht_value_ref(const dht_value*); OPENDHT_C_PUBLIC void dht_value_unref(dht_value*); OPENDHT_C_PUBLIC dht_data_view dht_value_get_data(const dht_value* data); @@ -89,6 +90,7 @@ OPENDHT_C_PUBLIC dht_value_id dht_value_get_id(const dht_value* data); OPENDHT_C_PUBLIC dht_publickey* dht_value_get_owner(const dht_value* data); OPENDHT_C_PUBLIC dht_infohash dht_value_get_recipient(const dht_value* data); OPENDHT_C_PUBLIC const char* dht_value_get_user_type(const dht_value* data); +OPENDHT_C_PUBLIC void dht_value_set_user_type(dht_value* data, const char* user_type); // callbacks typedef bool (*dht_get_cb)(const dht_value* value, void* user_data); -- GitLab