summaryrefslogtreecommitdiff
path: root/src/administration_writer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/administration_writer.cpp')
-rw-r--r--src/administration_writer.cpp39
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