Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 » Ultra Light C/C++ プログラミング » アプリケーション開発 » Embedded SQL を使用した Ultra Light C++ アプリケーション開発 » Embedded SQL アプリケーションの同期の設定 » 同期のモニタとキャンセル

 

同期ステータス情報

同期をモニタするコールバック関数は、ul_sync_status 構造体をパラメータとして取ります。

ul_sync_status 構造体には次のようなメンバーが含まれます。



struct ul_sync_status {
    struct {
       ul_u_long   bytes;
       ul_u_long   inserts;
       ul_u_long   updates;
       ul_u_long   deletes;
     }               sent;
    struct {
       ul_u_long   bytes;
       ul_u_long   inserts;
       ul_u_long   updates;
       ul_u_long   deletes;
     }               received;
    p_ul_sync_info  info;
    ul_sync_state   state;
    ul_u_short       db_table_count;
    ul_u_short       table_id;
    char             table_name[];
    ul_wchar         table_name_w2[];
    ul_u_short       sync_table_count;
    ul_u_short       sync_table_index;
    ul_sync_state    state;
    ul_bool          stop;
    ul_u_short       flags;
    ul_void *        user_data;
    SQLCA *          sqlca;
    ul_u_long        current_download_row_count;
    ul_u_long        total_download_row_count;
}
  • sent.inserts   これまでにアップロードされた挿入済みローの数。

  • sent.updates   これまでにアップロードされた更新済みローの数。

  • sent.deletes   これまでにアップロードされた削除済みローの数。

  • sent.bytes   これまでにアップロードされたバイト数。

  • received.inserts   これまでにダウンロードされた挿入済みローの数。

  • received.updates   これまでにダウンロードされた更新済みローの数。

  • received.deletes   これまでにダウンロードされた削除済みローの数。

  • received.bytes   これまでにダウンロードされたバイト数。

  • info   ul_sync_info 構造体にポインタを返します。

  • db_table_count   データベース内のテーブルの数を返します。

  • table_id   現在アップロードまたはダウンロードされているテーブルの番号 (1 から始まります)を返します。同期されないテーブルがある場合には、この番号で値がスキップされることがあります。また、番号が必ず増加するとはかぎりません。

  • table_name[]   現在のテーブルの名前を返します。

  • table_name_w2[]   現在のテーブルの名前 (ワイド文字バージョン)を返します。このフィールドには、Windows (デスクトップまたは Mobile) 環境の場合のみ値が入ります。

  • sync_table_count   同期中のテーブルの数を返します。

  • sync_table_index   アップロードまたはダウンロードされているテーブルの番号を返します。この番号は 1 から始まり sync_table_count の値で終わります。同期されていないテーブルがある場合には、この番号で値がスキップされることがあります。

  • state   以下のステータスのいずれかを表します。

    • UL_SYNC_STATE_STARTING   同期処理はまだ行われていません。

    • UL_SYNC_STATE_CONNECTING   同期ストリームは構築されていますが、まだ開かれていません。

    • UL_SYNC_STATE_SENDING_HEADER   同期ストリームが開かれ、ヘッダが送信されようとしています。

    • UL_SYNC_STATE_SENDING_TABLE   テーブルが送信されています。

    • UL_SYNC_STATE_SENDING_DATA   スキーマ情報またはデータが送信されています。

    • UL_SYNC_STATE_FINISHING_UPLOAD   アップロード処理が完了し、コミットが実行されています。

    • UL_SYNC_STATE_RECEIVING_UPLOAD_ACK   アップロード完了の確認を受信しています。

    • UL_SYNC_STATE_RECEIVING_TABLE   テーブルを受信しています。

    • UL_SYNC_STATE_RECEIVING_DATA   スキーマ情報またはデータを受信しています。

    • UL_SYNC_STATE_COMMITTING_DOWNLOAD   ダウンロード処理が完了し、コミットが実行されています。

    • UL_SYNC_STATE_SENDING_DOWNLOAD_ACK   ダウンロード完了の確認が送信されています。

    • UL_SYNC_STATE_DISCONNECTING   同期ストリームが閉じられようとしています。

    • UL_SYNC_STATE_DONE   同期は正常に完了しました。

    • UL_SYNC_STATE_ERROR   同期は完了しましたが、エラーが発生しました。

    • UL_SYNC_STATE_ROLLING_BACK_DOWNLOAD   ダウンロード中にエラーが発生し、ダウンロードがロールバックされています。

  • stop   同期を中断するには、このメンバーを true に設定します。SQL 例外の SQLE_INTERRUPTED が設定され、通信エラーが発生したかのように同期が停止します。observer は、適切なクリーンアップを実行するように、常に DONE または ERROR のステータスで呼び出されます。

  • flags   現在の状態に関連する追加情報を示す、現在の同期フラグを返します。

  • user_data   引数として ULSetSynchronizationCallback 関数に渡されるユーザデータオブジェクトを返します。

  • sqlca   接続のアクティブな SQLCA へのポインタを返します。

  • current_download_row_count   これまでにダウンロードされたローの数を返します。この数には、received.inserts、received.updates、または received.deletes に含まれていない、重複するローが含まれます。

  • total_download_row_count   ダウンロードで受信するローの合計数を返します。この数には、received.inserts、received.updates、または received.deletes に含まれていない、重複するローが含まれます。

 例
 CustDB の例
 参照