static void psync_sync_newsyncedfolder(psync_syncid_t syncid){ psync_sql_res *res; psync_uint_row row; uint64_t folderid; psync_synctype_t synctype; psync_sql_start_transaction(); res=psync_sql_query("SELECT folderid, synctype FROM syncfolder WHERE id=? AND flags=0"); psync_sql_bind_uint(res, 1, syncid); row=psync_sql_fetch_rowint(res); if (unlikely_log(!row)){ psync_sql_free_result(res); psync_sql_rollback_transaction(); return; } folderid=row[0]; synctype=row[1]; psync_sql_free_result(res); if (synctype&PSYNC_DOWNLOAD_ONLY){ psync_add_folder_for_downloadsync(syncid, synctype, folderid, 0); } else { res=psync_sql_prep_statement("REPLACE INTO syncedfolder (syncid, folderid, localfolderid, synctype) VALUES (?, ?, 0, ?)"); psync_sql_bind_uint(res, 1, syncid); psync_sql_bind_uint(res, 2, folderid); psync_sql_bind_uint(res, 3, synctype); psync_sql_run_free(res); } res=psync_sql_prep_statement("UPDATE syncfolder SET flags=1 WHERE flags=0 AND id=?"); psync_sql_bind_uint(res, 1, syncid); psync_sql_run_free(res); if (likely_log(psync_sql_affected_rows())){ if (!psync_sql_commit_transaction()){ if (synctype&PSYNC_UPLOAD_ONLY) psync_wake_localscan(); if (synctype&PSYNC_DOWNLOAD_ONLY){ psync_status_recalc_to_download(); psync_send_status_update(); psync_wake_download(); } psync_localnotify_add_sync(syncid); } } else psync_sql_rollback_transaction(); }
void psync_task_upload_file(psync_syncid_t syncid, psync_fileid_t localfileid, const char *name){ create_task3(PSYNC_UPLOAD_FILE, syncid, 0, localfileid, name); psync_wake_upload(); psync_status_recalc_to_upload(); psync_send_status_update(); }
void psync_task_download_file(psync_syncid_t syncid, psync_fileid_t fileid, psync_folderid_t localfolderid, const char *name){ create_task3(PSYNC_DOWNLOAD_FILE, syncid, fileid, localfolderid, name); psync_wake_download(); psync_status_recalc_to_download(); psync_send_status_update(); }