53 lines
976 B
C++
53 lines
976 B
C++
// TJP COPYRIGHT HEADER
|
|
|
|
//
|
|
// Timer.h
|
|
// algorithm
|
|
//
|
|
// Created by Timothy Prepscius on 1/19/18.
|
|
// Copyright © 2018 Timothy Prepscius. All rights reserved.
|
|
//
|
|
|
|
#pragma once
|
|
|
|
#include "Scheduler.h"
|
|
|
|
#include <core/future/Future.hpp>
|
|
|
|
#include <functional>
|
|
#include "Time.h"
|
|
|
|
namespace timprepscius::core::time {
|
|
|
|
struct SchedulerEvent {
|
|
virtual ~SchedulerEvent () {}
|
|
virtual void cancel () = 0;
|
|
} ;
|
|
|
|
struct Scheduler
|
|
{
|
|
virtual SchedulerEventPtr schedule(Duration period, bool repeat, std::function<void()> &&f) = 0;
|
|
virtual ~Scheduler();
|
|
|
|
Future<void> after(Duration period);
|
|
|
|
template<typename T, typename F>
|
|
Future<T> schedule(Duration period, F &&f);
|
|
|
|
template<typename T, typename F>
|
|
Future<T> schedule_future(Duration period, F &&f);
|
|
|
|
template<typename T, typename F>
|
|
Future<T> schedule(F &&f);
|
|
|
|
template<typename T, typename F>
|
|
Future<T> schedule_future(F &&f);
|
|
|
|
template<typename F>
|
|
void run(F &&f);
|
|
};
|
|
|
|
} // namespace
|
|
|
|
#include "Scheduler.inl"
|