Events during download

The following pseudocode provides an overview of the sequence in which download events, and the script of the same name, are invoked.

These events take place at the download location in the complete event model provided in Overview of MobiLink events.



------------------------------------------------------
prepare_for_download
------------------------------------------------------

generate_next_last_download_timestamp
modify_last_download_timestamp
fetch the next download timestamp from consolidated
prepare_for_download

------------------------------------------------------
download
------------------------------------------------------

begin_download // Connection event.
for each table being synchronized {
   begin_download // Table event.
}
   handle_DownloadData
   for each table being synchronized {
     begin_download_deletes
     for each row in download_delete_cursor {
       if( all primary key columns are NULL ) {
         send TRUNCATE to remote
       } else {
         send DELETE to remote
       }
     }
     end_download_deletes
     begin_download_rows
     for each row in download_cursor {
       send INSERT ON EXISTING UPDATE to remote
     }
     end_download_rows
   }
   modify_next_last_download_timestamp
   for each table being synchronized {
     if( begin_download table script was processed ) {
        end_download // Table event
     }
}
if( begin_download connect script was processed ) {
   end_download // Connection event
}
   for each table being synchronized {
     download_statistics   // Table event.
   }
     download_statistics   // Connection event.

COMMIT
 Notes