summaryrefslogtreecommitdiff
path: root/RealtimeSync/monitor.h
blob: 0b9dfbc04f0885a3e089366702f794235e0d124b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// **************************************************************************
// * This file is part of the FreeFileSync project. It is distributed under *
// * GNU General Public License: http://www.gnu.org/licenses/gpl.html       *
// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved        *
// **************************************************************************

#ifndef MONITOR_HEADER_345087425834253425
#define MONITOR_HEADER_345087425834253425

#include <functional>
#include <zen/zstring.h>

namespace rts
{
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


struct MonitorCallback
{
    virtual ~MonitorCallback() {}

    enum WatchPhase
    {
        MONITOR_PHASE_ACTIVE,
        MONITOR_PHASE_WAITING,
    };
    virtual void setPhase(WatchPhase mode) = 0;
    virtual void executeExternalCommand() = 0;
    virtual void requestUiRefresh() = 0;
    virtual void reportError(const std::wstring& msg) = 0; //automatically retries after return!
};
void monitorDirectories(const std::vector<Zstring>& dirNamesNonFmt,
                        //non-formatted dirnames that yet require call to getFormattedDirectoryName(); empty directories must be checked by caller!
                        unsigned int delay,
                        MonitorCallback& callback);
}

#endif //MONITOR_HEADER_345087425834253425
bgstack15