diff options
Diffstat (limited to 'src/administration_writer.cpp')
| -rw-r--r-- | src/administration_writer.cpp | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/src/administration_writer.cpp b/src/administration_writer.cpp index ef604b1..8304e5c 100644 --- a/src/administration_writer.cpp +++ b/src/administration_writer.cpp @@ -32,12 +32,19 @@ static mtx_t _save_file_mutex; static bool _is_writing = false; static write_completed_event _write_completed_ev = 0; +static bool _last_write_result = false; bool administration_writer::is_writing() { return _is_writing; } +bool administration_writer::last_write_result() +{ + return _last_write_result; +} + + void administration_writer::set_write_completed_event_callback(write_completed_event ev) { _write_completed_ev = ev; @@ -48,7 +55,7 @@ static void on_administration_data_changed() _is_writing = true; auto* func = new auto([]() { - administration_writer::save_administration_info_blocking(); + _last_write_result = administration_writer::save_administration_info_blocking(); _is_writing = false; if (_write_completed_ev) _write_completed_ev(); @@ -71,8 +78,8 @@ static void on_administration_data_deleted(char id[MAX_LEN_ID]) auto* func = new auto([](void* arg) { char* id = (char*)arg; - administration_writer::delete_entry(id); - administration_writer::save_administration_info_blocking(); + _last_write_result = administration_writer::delete_entry(id); + _last_write_result = administration_writer::save_administration_info_blocking(); memops::unalloc(arg); _is_writing = false; @@ -97,8 +104,8 @@ static void on_invoice_changed(invoice* inv) auto* func = new auto([](void* arg) { invoice* inv = (invoice*)arg; - administration_writer::save_invoice_blocking(*inv); - administration_writer::save_administration_info_blocking(); + _last_write_result = administration_writer::save_invoice_blocking(*inv); + _last_write_result = administration_writer::save_administration_info_blocking(); administration::invoice_destroy(inv); _is_writing = false; @@ -122,8 +129,8 @@ static void on_contact_changed_changed(contact* cc) auto* func = new auto([](void* arg) { contact* cc = (contact*)arg; - administration_writer::save_contact_blocking(*cc); - administration_writer::save_administration_info_blocking(); + _last_write_result = administration_writer::save_contact_blocking(*cc); + _last_write_result = administration_writer::save_administration_info_blocking(); memops::unalloc(arg); _is_writing = false; @@ -147,8 +154,8 @@ static void on_taxrate_changed_changed(tax_rate* rate) auto* func = new auto([](void* arg) { tax_rate* rate = (tax_rate*)arg; - administration_writer::save_tax_rate_blocking(*rate); - administration_writer::save_administration_info_blocking(); + _last_write_result = administration_writer::save_tax_rate_blocking(*rate); + _last_write_result = administration_writer::save_administration_info_blocking(); memops::unalloc(arg); _is_writing = false; @@ -172,7 +179,7 @@ static void on_costcenter_changed_changed(cost_center* cc) auto* func = new auto([](void* arg) { cost_center* cc = (cost_center*)arg; - administration_writer::save_cost_center_blocking(*cc); + _last_write_result = administration_writer::save_cost_center_blocking(*cc); memops::unalloc(arg); _is_writing = false; @@ -196,8 +203,8 @@ static void on_project_changed_changed(project* pp) auto* func = new auto([](void* arg) { project* pp = (project*)arg; - administration_writer::save_project_blocking(*pp); - administration_writer::save_administration_info_blocking(); + _last_write_result = administration_writer::save_project_blocking(*pp); + _last_write_result = administration_writer::save_administration_info_blocking(); memops::unalloc(arg); _is_writing = false; @@ -287,6 +294,10 @@ bool administration_writer::delete_entry(const char* id) static bool write_to_zip(const char* entry_to_replace, char* orig_content, int final_length) { + #if SIMULATE_WRITE_FAILURE + return 0; + #endif + mtx_lock(&_save_file_mutex); bool result = 1; @@ -302,9 +313,9 @@ static bool write_to_zip(const char* entry_to_replace, char* orig_content, int f zip_close(zip_write); - #if WRITE_DELAY_SEC != 0 + #if SIMULATE_SLOW_DISK struct timespec time; - time.tv_sec = WRITE_DELAY_SEC; + time.tv_sec = 1; time.tv_nsec = 0; thrd_sleep(&time, NULL); #endif |
