diff options
Diffstat (limited to 'process_callback.h')
-rw-r--r-- | process_callback.h | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/process_callback.h b/process_callback.h index 77b2987f..c7681bb0 100644 --- a/process_callback.h +++ b/process_callback.h @@ -11,24 +11,26 @@ #include <zen/int64.h> //interface for comparison and synchronization process status updates (used by GUI or Batch mode) - +const int UI_UPDATE_INTERVAL = 100; //unit: [ms]; perform ui updates not more often than necessary, +//100 seems to be a good value with only a minimal performance loss; also used by Win 7 copy progress bar +//this one is required by async directory existence check! //report status during comparison and synchronization struct ProcessCallback { virtual ~ProcessCallback() {} - //identifiers of different phases - enum Process + //these methods have to be implemented in the derived classes to handle error and status information + + //notify synchronization phases + enum Phase { - PROCESS_NONE = 10, - PROCESS_SCANNING, - PROCESS_COMPARING_CONTENT, - PROCESS_SYNCHRONIZING + PHASE_NONE, //initial status + PHASE_SCANNING, + PHASE_COMPARING_CONTENT, + PHASE_SYNCHRONIZING }; - - //these methods have to be implemented in the derived classes to handle error and status information - virtual void initNewProcess(int objectsTotal, zen::Int64 dataTotal, Process processID) = 0; //informs about the total amount of data that will be processed from now on + virtual void initNewPhase(int objectsTotal, zen::Int64 dataTotal, Phase phaseId) = 0; //informs about the total amount of data that will be processed in this phase //note: this one must NOT throw in order to properly allow undoing setting of statistics! //it is in general paired with a call to requestUiRefresh() to compensate! @@ -36,11 +38,12 @@ struct ProcessCallback virtual void updateTotalData (int objectsDelta, zen::Int64 dataDelta) = 0; // /*the estimated total may change *during* sync: 1. move file -> fallback to copy + delete - 2. file copy, actual size changed after comparison + 2. file copy, actual size changed after comparison or file contains significant ADS data 3. auto-resolution for failed create operations due to missing source 4. directory deletion: may contain more items than scanned by FFS: excluded by filter 5. delete directory to recycler or move to user-defined dir on same volume: no matter how many sub-elements exist, this is only 1 object to process! - 6. user-defined deletion directory on different volume: full file copy required (instead of move) */ + 6. user-defined deletion directory on different volume: full file copy required (instead of move) + 7. Copy sparse files */ //opportunity to abort must be implemented in a frequently executed method like requestUiRefresh() virtual void requestUiRefresh() = 0; //throw ? |