Beispiel #1
0
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();
}
Beispiel #2
0
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();
}
Beispiel #3
0
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();
}