diff --git a/c/opendht.cpp b/c/opendht.cpp index f5db5773b4997e7ce69eeb7822e6db96e767d2d8..cf80546f4c5773210d3a71014d71354aaee329e8 100644 --- a/c/opendht.cpp +++ b/c/opendht.cpp @@ -132,8 +132,12 @@ 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_with_id_new(const uint8_t* data, size_t size, uint64_t value_id) { + return reinterpret_cast<dht_value*>(new ValueSp(std::make_shared<dht::Value>(dht::ValueType::USER_DATA.id, data, size, value_id))); +} + 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))); + return dht_value_with_id_new(data, size, 0); } dht_value* dht_value_new_from_string(const char* str) { diff --git a/c/opendht_c.h b/c/opendht_c.h index dc87ec16ec9cf31c48419fea23d46860b99c85cd..dd3750bfbb538cc28c23bca9fc2c2c57cd32e2bb 100644 --- a/c/opendht_c.h +++ b/c/opendht_c.h @@ -104,6 +104,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_with_id_new(const uint8_t* data, size_t size, uint64_t value_id); 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*);