* Copyright 2010, Haiku.
* Distributed under the terms of the MIT License.
*
* Authors:
* Clemens Zeidler <haiku@clemens-zeidler.de>
*/
#ifndef CATCH_UP_MANAGER_H
#define CATCH_UP_MANAGER_H
#include "AnalyserDispatcher.h"
#define DEBUG_CATCH_UP
#ifdef DEBUG_CATCH_UP
#include <stdio.h>
# define STRACE(x...) printf(x)
#else
# define STRACE(x...) ;
#endif
class CatchUpAnalyser : public AnalyserDispatcher {
public:
CatchUpAnalyser(const BVolume& volume,
time_t start, time_t end,
BHandler* manager);
void MessageReceived(BMessage *message);
void StartAnalysing();
void AnalyseEntry(const entry_ref& ref);
const BVolume& Volume() { return fVolume; }
private:
void _CatchUp();
void _WriteSyncSatus(bigtime_t syncTime);
BVolume fVolume;
time_t fStart;
time_t fEnd;
BHandler* fCatchUpManager;
};
typedef BObjectList<CatchUpAnalyser> CatchUpAnalyserList;
class CatchUpManager : public BHandler {
public:
CatchUpManager(const BVolume& volume);
~CatchUpManager();
void MessageReceived(BMessage *message);
bool AddAnalyser(const FileAnalyser* analyser);
void RemoveAnalyser(const BString& name);
bool CatchUp();
void Stop();
private:
BVolume fVolume;
FileAnalyserList fFileAnalyserQueue;
CatchUpAnalyserList fCatchUpAnalyserList;
};
#endif