21#ifndef __ANTARES_FS_WALKER_FS_WALKER_H__
22#define __ANTARES_FS_WALKER_FS_WALKER_H__
27#include <yuni/core/bind.h>
28#include <yuni/core/noncopyable.h>
29#include <yuni/core/string.h>
30#include <yuni/thread/thread.h>
33#include "statistics.h"
45using OnDirectoryEvent = Flow (*)(
const YString& path,
bool empty,
void* user);
47using OnFileEvent = void (*)(
const YString& filename,
48 const YString& parent,
53using DispatchJobEvent = std::function<void(
IJob::Ptr job)>;
59 using Ptr = std::shared_ptr<IExtension>;
127class Walker final:
public Yuni::NonCopyable<Walker>
131 explicit Walker(
const AnyString& logprefix);
136 void directory(
const AnyString& path);
138 YString directory()
const;
IExtension()
Default constructor.
Definition fswalker.h:67
virtual const char * caption() const =0
Human readable caption of the extension.
virtual OnDirectoryEvent directoryEvent()
Provide a reentrant event for handling directories.
Definition fswalker.h:94
virtual OnFileEvent fileEvent()
Provide a reentrant event for handling files.
Definition fswalker.h:102
virtual ~IExtension()
Destructor.
Definition fswalker.h:74
virtual void * userdataCreate(DispatchJobEvent &)
Get the user data.
Definition fswalker.h:110
std::vector< Ptr > Vector
List.
Definition fswalker.h:61
virtual void userdataDestroy(void *)
Destroy user data.
Definition fswalker.h:118
std::shared_ptr< IExtension > Ptr
Most suitable smart pointer.
Definition fswalker.h:59
virtual int priority() const
Recommended priority for the extension.
Definition fswalker.h:86
Yuni::Job::IJob::Ptr::Promote< IJob >::Ptr Ptr
The most suitable smart pointer for the class.
Definition job.h:43
Definition statistics.h:29
Definition fswalker.h:128
void retrieveStatistics(Statistics &out)
Retrieve statistics for the last run.
Definition fswalker.cpp:545