00001 #pragma once
00002
00003 #include <memory>
00004
00005 #include <fdr/error.h>
00006
00007 namespace FDR
00008 {
00013 class CancelledError : public Error
00014 {
00015 public:
00016 CancelledError();
00017 };
00018
00052 class Canceller
00053 {
00054 public:
00056 Canceller();
00057 ~Canceller();
00058
00059 Canceller(const Canceller&) = delete;
00060 Canceller& operator=(const Canceller&) = delete;
00061
00063 bool cancelled() const;
00064
00068 void cancel();
00069
00070 private:
00071 struct Data;
00072 std::unique_ptr<Data> data;
00073
00074 friend struct CancellerHelper;
00075 };
00076
00077 }