Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
opendht
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Model registry
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
savoirfairelinux
opendht
Commits
e8d96d3b
Commit
e8d96d3b
authored
5 years ago
by
Adrien Béraud
Browse files
Options
Downloads
Patches
Plain Diff
c wrapper: add support for permanent put
parent
c92d236c
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
c/opendht.cpp
+28
-14
28 additions, 14 deletions
c/opendht.cpp
c/opendht_c.h
+4
-0
4 additions, 0 deletions
c/opendht_c.h
with
32 additions
and
14 deletions
c/opendht.cpp
+
28
−
14
View file @
e8d96d3b
...
...
@@ -10,8 +10,7 @@ extern "C" {
#endif
// dht::InfoHash
const
char
*
dht_infohash_print
(
const
dht_infohash
*
h
)
{
const
char
*
dht_infohash_print
(
const
dht_infohash
*
h
)
{
return
reinterpret_cast
<
const
dht
::
InfoHash
*>
(
h
)
->
to_c_str
();
}
...
...
@@ -19,13 +18,11 @@ void dht_infohash_zero(dht_infohash* h) {
*
reinterpret_cast
<
dht
::
InfoHash
*>
(
h
)
=
dht
::
InfoHash
{};
}
void
dht_infohash_random
(
dht_infohash
*
h
)
{
void
dht_infohash_random
(
dht_infohash
*
h
)
{
*
reinterpret_cast
<
dht
::
InfoHash
*>
(
h
)
=
dht
::
InfoHash
::
getRandom
();
}
void
dht_infohash_get
(
dht_infohash
*
h
,
const
uint8_t
*
dat
,
size_t
dat_size
)
{
void
dht_infohash_get
(
dht_infohash
*
h
,
const
uint8_t
*
dat
,
size_t
dat_size
)
{
*
reinterpret_cast
<
dht
::
InfoHash
*>
(
h
)
=
dht
::
InfoHash
::
get
(
dat
,
dat_size
);
}
...
...
@@ -33,19 +30,16 @@ bool dht_infohash_is_zero(const dht_infohash* h) {
return
!
static_cast
<
bool
>
(
*
reinterpret_cast
<
const
dht
::
InfoHash
*>
(
h
));
}
const
char
*
dht_pkid_print
(
const
dht_pkid
*
h
)
{
const
char
*
dht_pkid_print
(
const
dht_pkid
*
h
)
{
return
reinterpret_cast
<
const
dht
::
PkId
*>
(
h
)
->
to_c_str
();
}
// dht::Blob
void
dht_blob_delete
(
dht_blob
*
data
)
{
void
dht_blob_delete
(
dht_blob
*
data
)
{
delete
reinterpret_cast
<
dht
::
Blob
*>
(
data
);
}
dht_data_view
dht_blob_get_data
(
const
dht_blob
*
data
)
{
dht_data_view
dht_blob_get_data
(
const
dht_blob
*
data
)
{
dht_data_view
view
;
view
.
data
=
reinterpret_cast
<
const
dht
::
Blob
*>
(
data
)
->
data
();
view
.
size
=
reinterpret_cast
<
const
dht
::
Blob
*>
(
data
)
->
size
();
...
...
@@ -53,8 +47,7 @@ dht_data_view dht_blob_get_data(const dht_blob* data)
}
// dht::Value
dht_data_view
dht_value_get_data
(
const
dht_value
*
data
)
{
dht_data_view
dht_value_get_data
(
const
dht_value
*
data
)
{
const
ValueSp
&
vsp
(
*
reinterpret_cast
<
const
ValueSp
*>
(
data
));
dht_data_view
view
;
view
.
data
=
vsp
->
data
.
data
();
...
...
@@ -62,6 +55,11 @@ dht_data_view dht_value_get_data(const dht_value* data)
return
view
;
}
dht_value_id
dht_value_get_id
(
const
dht_value
*
data
)
{
const
ValueSp
&
vsp
(
*
reinterpret_cast
<
const
ValueSp
*>
(
data
));
return
vsp
->
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
)));
}
...
...
@@ -256,6 +254,22 @@ void dht_runner_put(dht_runner* r, const dht_infohash* h, const dht_value* v, dh
});
}
void
dht_runner_put_permanent
(
dht_runner
*
r
,
const
dht_infohash
*
h
,
const
dht_value
*
v
,
dht_done_cb
done_cb
,
void
*
cb_user_data
)
{
auto
runner
=
reinterpret_cast
<
dht
::
DhtRunner
*>
(
r
);
auto
hash
=
reinterpret_cast
<
const
dht
::
InfoHash
*>
(
h
);
auto
value
=
reinterpret_cast
<
const
ValueSp
*>
(
v
);
runner
->
put
(
*
hash
,
*
value
,
[
done_cb
,
cb_user_data
](
bool
ok
){
if
(
done_cb
)
done_cb
(
ok
,
cb_user_data
);
},
dht
::
time_point
::
max
(),
true
);
}
void
dht_runner_cancel_put
(
dht_runner
*
r
,
const
dht_infohash
*
h
,
dht_value_id
value_id
)
{
auto
runner
=
reinterpret_cast
<
dht
::
DhtRunner
*>
(
r
);
auto
hash
=
reinterpret_cast
<
const
dht
::
InfoHash
*>
(
h
);
runner
->
cancelPut
(
*
hash
,
value_id
);
}
void
dht_runner_shutdown
(
dht_runner
*
r
,
dht_shutdown_cb
done_cb
,
void
*
cb_user_data
)
{
auto
runner
=
reinterpret_cast
<
dht
::
DhtRunner
*>
(
r
);
runner
->
shutdown
([
done_cb
,
cb_user_data
](){
...
...
This diff is collapsed.
Click to expand it.
c/opendht_c.h
+
4
−
0
View file @
e8d96d3b
...
...
@@ -21,7 +21,9 @@ typedef struct dht_data_view dht_data_view;
// dht::Value
struct
OPENDHT_C_PUBLIC
dht_value
;
typedef
struct
dht_value
dht_value
;
typedef
uint64_t
dht_value_id
;
OPENDHT_C_PUBLIC
dht_data_view
dht_value_get_data
(
const
dht_value
*
data
);
OPENDHT_C_PUBLIC
dht_value_id
dht_value_get_id
(
const
dht_value
*
data
);
OPENDHT_C_PUBLIC
dht_value
*
dht_value_new
(
const
uint8_t
*
data
,
size_t
size
);
OPENDHT_C_PUBLIC
dht_value
*
dht_value_ref
(
const
dht_value
*
);
OPENDHT_C_PUBLIC
void
dht_value_unref
(
dht_value
*
);
...
...
@@ -130,6 +132,8 @@ OPENDHT_C_PUBLIC void dht_runner_get(dht_runner* runner, const dht_infohash* has
OPENDHT_C_PUBLIC
dht_op_token
*
dht_runner_listen
(
dht_runner
*
runner
,
const
dht_infohash
*
hash
,
dht_value_cb
cb
,
dht_shutdown_cb
done_cb
,
void
*
cb_user_data
);
OPENDHT_C_PUBLIC
void
dht_runner_cancel_listen
(
dht_runner
*
runner
,
const
dht_infohash
*
hash
,
dht_op_token
*
token
);
OPENDHT_C_PUBLIC
void
dht_runner_put
(
dht_runner
*
runner
,
const
dht_infohash
*
hash
,
const
dht_value
*
value
,
dht_done_cb
done_cb
,
void
*
cb_user_data
);
OPENDHT_C_PUBLIC
void
dht_runner_put_permanent
(
dht_runner
*
runner
,
const
dht_infohash
*
hash
,
const
dht_value
*
value
,
dht_done_cb
done_cb
,
void
*
cb_user_data
);
OPENDHT_C_PUBLIC
void
dht_runner_cancel_put
(
dht_runner
*
runner
,
const
dht_infohash
*
hash
,
dht_value_id
value_id
);
OPENDHT_C_PUBLIC
void
dht_runner_shutdown
(
dht_runner
*
runner
,
dht_shutdown_cb
done_cb
,
void
*
cb_user_data
);
#ifdef __cplusplus
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment