#pragma once

#include <util/generic/ptr.h>
#include <util/generic/function.h>
#include <util/datetime/base.h>

namespace NCron {
    struct IHandle {
        virtual ~IHandle();
    };

    using TJob = std::function<void()>;
    using IHandlePtr = TAutoPtr<IHandle>;

    IHandlePtr StartPeriodicJob(TJob job);
    IHandlePtr StartPeriodicJob(TJob job, TDuration interval);
    IHandlePtr StartPeriodicJob(TJob job, TDuration interval, const TString& threadName);
}