------------------------------------------------------ MobiLink complete event model. Legend: - // This is a comment. - <name> The pseudocode for <name> is listed separately in a later section, under a banner: ------------------------ name ------------------------ - VariableName <- value Assign the given value to the given variable name. Variable names are in mixed case. - event_name If you have defined a script for the given event name, it is invoked. ------------------------------------------------------ CONNECT to consolidated database begin_connection_autocommit begin_connection COMMIT for each synchronization request with the same script version { <synchronize> } end_connection COMMIT DISCONNECT from consolidated database ------------------------------------------------------ synchronize ------------------------------------------------------ <authenticate> <begin_synchronization> <upload> <prepare_for_download> <download> <end_synchronization> ------------------------------------------------------ authenticate ------------------------------------------------------ Status <- 1000 UseDefaultAuthentication <- TRUE if( authenticate_user script is defined ) { UseDefaultAuthentication <- FALSE TempStatus <- authenticate_user if( TempStatus > Status ) { Status <- TempStatus } } if( authenticate_user_hashed script is defined ) { UseDefaultAuthentication <- FALSE TempStatus <- authenticate_user_hashed if( TempStatus > Status ) { Status <- TempStatus } } if( authenticate_parameters script is defined ) { TempStatus <- authenticate_parameters if( TempStatus > Status ) { Status <- TempStatus } if( UseDefaultAuthentication ) { if( the user exists in the ml_user table ) { if( ml_user.hashed_password column is not NULL ) { if( password matches ml_user.hashed_password ) { Status <- 1000 } else { Status <- 4000 } } else { Status <- 1000 } } else if( -zu+ was on the command line ) { Status <- 1000 } else { Status <- 4000 } } if( Status >= 3000 ) { // Abort the synchronization. } else { // UserName defaults to MobiLink user name // sent from the remote. if( modify_user script is defined ) { UserName <- modify_user // The new value of UserName is later passed to // all scripts that expect the MobiLink user name. } } COMMIT ------------------------------------------------------ begin_synchronization ------------------------------------------------------ begin_synchronization // Connection event. for each table being synchronized { begin_synchronization // Call the table level script. } for each publication being synchronized { begin_publication } COMMIT ------------------------------------------------------ end_synchronization ------------------------------------------------------ for each publication being synchronized { if( begin_publication script was processed ) { end_publication } } for each table being synchronized { if( begin_synchronization table script was processed ) { end_synchronization // Table event. } } if( begin_synchronization connection script was processed ) { end_synchronization // Connection event. } for each table being synchronized { synchronization_statistics // Table event. } synchronization_statistics // Connection event. for each table being synchronized { time_statistics // Table event. } time_statistics // Connection event. COMMIT |
For the details of upload processing, see Events during upload.
For the details of download processing, see Events during download.
Discuss this page in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |