diff --git a/ASYNC-API-TODO.txt b/ASYNC-API-TODO.txt index 27ac18efa..c037db859 100644 --- a/ASYNC-API-TODO.txt +++ b/ASYNC-API-TODO.txt @@ -11,12 +11,11 @@ APIs: dc_configure # note: dc_start_jobs() is NOT allowed to run concurrently dc_imex NEVER goes through the job system dc_imex import_backup needs to ensure dc_stop_jobs() - dc_jobs_are_running() # tell if we are in start/stop-jobs state - dc_context_run # start async scheduler - -> dc_start_jobs - dc_context_shutdown # Stop async scheduler (after return no async-task runs) - -> dc_stop_jobs + dc_io_start # start smtp/imap and job handling subsystems + dc_io_stop # stop smtp/imap and job handling subsystems + dc_io_status # return 1 if smtp/imap/jobs susbystem is running + dc_close # FFI only -> can be dropped dc_context_unref diff --git a/deltachat-ffi/deltachat.h b/deltachat-ffi/deltachat.h index 91d03dafb..22420f2f9 100644 --- a/deltachat-ffi/deltachat.h +++ b/deltachat-ffi/deltachat.h @@ -583,16 +583,32 @@ int dc_is_configured (const dc_context_t* context); /** - * TODO: Document + * Start job and IMAP/SMTP tasks. + * + * @memberof dc_context_t + * @param context The context object as created by dc_context_new(). + * @return None */ -void dc_context_run (dc_context_t* context); - -int dc_is_running (const dc_context_t* context); +void dc_io_start (dc_context_t* context); /** - * TODO: Document + * Check if IO (SMTP/IMAP/Jobs) has been started. + * + * @memberof dc_context_t + * @param context The context object as created by dc_context_new(). + * @return 1=IO is running; + * 0=IO is not running. */ -void dc_context_shutdown(dc_context_t* context); +int dc_io_status(const dc_context_t* context); + +/** + * Stop job and IMAP/SMTP tasks and return when they are finished. + * + * @memberof dc_context_t + * @param context The context object as created by dc_context_new(). + * @return None + */ +void dc_io_stop(dc_context_t* context); /** * This function can be called whenever there is a hint diff --git a/deltachat-ffi/src/lib.rs b/deltachat-ffi/src/lib.rs index d87935f7b..6cef31224 100644 --- a/deltachat-ffi/src/lib.rs +++ b/deltachat-ffi/src/lib.rs @@ -481,7 +481,7 @@ pub unsafe extern "C" fn dc_is_configured(context: *mut dc_context_t) -> libc::c } #[no_mangle] -pub unsafe extern "C" fn dc_context_run(context: *mut dc_context_t) { +pub unsafe extern "C" fn dc_io_start(context: *mut dc_context_t) { if context.is_null() { return; } @@ -491,7 +491,7 @@ pub unsafe extern "C" fn dc_context_run(context: *mut dc_context_t) { } #[no_mangle] -pub unsafe extern "C" fn dc_is_running(context: *mut dc_context_t) -> libc::c_int { +pub unsafe extern "C" fn dc_io_status(context: *mut dc_context_t) -> libc::c_int { if context.is_null() { return 0; } @@ -665,7 +665,7 @@ pub unsafe extern "C" fn dc_get_next_event(context: *mut dc_context_t) -> *mut d } #[no_mangle] -pub unsafe extern "C" fn dc_context_shutdown(context: *mut dc_context_t) { +pub unsafe extern "C" fn dc_io_stop(context: *mut dc_context_t) { if context.is_null() { eprintln!("ignoring careless call to dc_shutdown()"); return; diff --git a/python/fail_test.py b/python/fail_test.py index 5d1535fdf..736471e71 100644 --- a/python/fail_test.py +++ b/python/fail_test.py @@ -4,4 +4,4 @@ from deltachat.capi import ffi, lib if __name__ == "__main__": ctx = capi.lib.dc_context_new(ffi.NULL, ffi.NULL) - lib.dc_context_shutdown(ctx) + lib.dc_io_stop(ctx) diff --git a/python/src/deltachat/account.py b/python/src/deltachat/account.py index 54761fada..14741bf88 100644 --- a/python/src/deltachat/account.py +++ b/python/src/deltachat/account.py @@ -575,7 +575,7 @@ class Account(object): if not self.is_configured(): self.configure() self.wait_configure_finish() - lib.dc_context_run(self._dc_context) + lib.dc_io_start(self._dc_context) def configure(self): assert not self.is_configured() @@ -596,7 +596,7 @@ class Account(object): del self._configtracker def is_started(self): - return self._event_thread.is_alive() and bool(lib.dc_is_running(self._dc_context)) + return self._event_thread.is_alive() and bool(lib.dc_io_status(self._dc_context)) def wait_shutdown(self): """ wait until shutdown of this account has completed. """ @@ -607,9 +607,9 @@ class Account(object): self.log("stop_ongoing") self.stop_ongoing() - if bool(lib.dc_is_running(self._dc_context)): + if bool(lib.dc_io_status(self._dc_context)): self.log("context_shutdown (stop core scheduler)") - lib.dc_context_shutdown(self._dc_context) + lib.dc_io_stop(self._dc_context) else: self.log("stop_scheduler called on non-running context") diff --git a/python/x.py b/python/x.py deleted file mode 100644 index 3f7a6cdb1..000000000 --- a/python/x.py +++ /dev/null @@ -1,37 +0,0 @@ - -import deltachat -import os -import shutil -from deltachat.capi import lib - -try: - os.remove("/tmp/db") -except: - pass -try: - shutil.rmtree("/tmp/db-blobs") -except: - pass - - -acc = deltachat.Account("/tmp/db", logging=True) -acc.set_config("addr", "tmp.hjfcq@five.chat") -acc.set_config("mail_pw", "aihWNtLuRJgV") -acc.start() # lib.dc_configure + lib.dc_context_run -assert acc.is_configured() -acc.stop_scheduler() - -run = 0 -while 1: - print("****** starting scheduler") - acc.start() - import time ; time.sleep(0.5) - print("******* stopping scheduler") - acc.stop_scheduler() - print("******* waiting", run) - import time ; time.sleep(1.0) - run += 1 - -contact = acc.create_contact("holger@deltachat.de") -chat = acc.create_chat_by_contact(contact) -chat.send_text("hello")