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

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

 

同期ステータス情報

同期をモニターするコールバック関数は、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_tableCount;
    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;
}
  • sent.inserts   これまでにアップロードされた挿入済みローの数。

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

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

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

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

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

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

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

  • info   ul_sync_info 構造体へのポインター。

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

  • 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 へのポインター。

 例
 CustDB の例
 参照