62
doc/developer.md
Normal file
62
doc/developer.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# Developer Docs for SDL
|
||||
|
||||
Random stuff that is useful for devs.
|
||||
|
||||
# Checking return values from litelib
|
||||
|
||||
There are 3 functions written in Rust that live in lib/src/lib.rs :
|
||||
|
||||
* `litelib_initialize_new`
|
||||
* create a new client/connection and brand new wallet
|
||||
* `litelib_initialize_new_from_phrase`
|
||||
* create a new client/connection from a seedphrase (restoring from seedphrase)
|
||||
* `litelib_initialize_existing`
|
||||
* create a new client/connection with an already existing wallet
|
||||
|
||||
The Rust code calls it a "LightClient" while the C++ of SDL calls it a "Connection".
|
||||
|
||||
When `litelib_initialize_existing` or `litelib_initialize_new_from_phrase` return successfully, they return the string "OK" (which is not JSON).
|
||||
|
||||
When `litelib_initialize_new` returns successfully it returns JSON that looks like :
|
||||
|
||||
```
|
||||
{"seed":"seed","birthday":birthday}
|
||||
```
|
||||
|
||||
where "seed" is a 24 word seed and birthday is an integer block height.
|
||||
|
||||
So when calling these 3 functions, which looks almost the same in the calling code, the code which checks if they worked will be different, depending on what each returns on success.
|
||||
|
||||
When checking the return value of `litelib_initialize_existing` or `litelib_initialize_new_from_phrase` it should look like :
|
||||
|
||||
```
|
||||
QString reply = "";
|
||||
try {
|
||||
char* resp = litelib_initialize_new_from_phrase(...);
|
||||
reply = litelib_process_response(resp);
|
||||
} catch {
|
||||
...
|
||||
}
|
||||
if (reply.isEmpty())) {
|
||||
// litelib_initialize_new_from_phrase failed
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
Yes, `isEmpty()` is not a very strict check, we could actually check for valid-looking JSON (starts with a { and ends with a }) as well as making sure the keys "seed" and "birthday" exist. Please implement this.
|
||||
|
||||
When checking the return value of `litelib_initialize_new` it should look like :
|
||||
|
||||
```
|
||||
QString reply = "";
|
||||
try {
|
||||
char* resp = litelib_initialize_new(...);
|
||||
reply = litelib_process_response(resp);
|
||||
} catch {
|
||||
...
|
||||
}
|
||||
if (reply.toUpper().trimmed() != "OK") {
|
||||
// litelib_initialize_new failed
|
||||
...
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user