Commit Graph

8 Commits

Author SHA1 Message Date
Floris Bruynooghe
a6102d1039 Refactor the internal sql interface somewhat
Experiment with refactoring the internal sql interface a bit.  My
original goal was to modify the schema and thus refactor to a state
where it would be sane to write tests for dc_sqlite_open() (and/or
however it ends up refactored) to assert schame changes before/after.
2019-06-17 22:31:36 +02:00
Floris Bruynooghe
db9bc15d3e Make the callback optional again
The C API allows passing a NULL pointer is for the callback function.
However when calling the callback nothing checks for this null pointer
and thus things fail badly.  Even worse since the C API is defined
using an "fn pointer" rather than a "*-ptr" or raw pointer to the
function rust does not realise this can be invalid and therefore the
typechecker does not catch this even though there are no unsafe casts.

Fix this by making the callback an Option in rust, this can be easily
checked when calling.  Also add a Context.call_cb() function which
simplifies calling the callback, hides the weird syntax due to the
function pointer and makes the call a little easier.  Finally it also
means the option checking is only needed in one place.

For the C API this needs to check if this is a NULL pointer or not,
this is implicitly done by rust using the "nullable pointer
optimisation":
https://doc.rust-lang.org/nomicon/ffi.html#the-nullable-pointer-optimization
2019-06-17 20:06:15 +02:00
dignifiedquire
c9c3ac3c23 fix: do not generate ptrs inside map 2019-05-29 19:14:10 +02:00
Friedel Ziegelmayer
d033667433 Fix bugs (#93)
* fix(repl): pass null pointer instead of empty string

* fix(peerstate): ensure load and store to the db works
2019-05-28 17:59:41 +02:00
dignifiedquire
22868abe0e refactor: rename dc_context to context 2019-05-27 09:32:50 +02:00
dignifiedquire
5237c19f4e refactor: remove dc prefix from cleaned up modules 2019-05-27 09:21:42 +02:00
dignifiedquire
66d8421a90 refactor: remove dc_hash in favor of HashMap and HashSet
Closes #49
2019-05-26 23:01:17 +02:00
Friedel Ziegelmayer
94aa314f30 refactor(peerstate): safe implementation of peerstate 2019-05-26 22:33:39 +02:00