10 #ifndef SCARAB_CANCELABLE_HH_ 11 #define SCARAB_CANCELABLE_HH_ 69 bool is_canceled()
const;
72 virtual void do_cancellation(
int a_code );
73 virtual void do_reset_cancellation();
106 virtual ~cancelable_wrapper();
107 virtual void do_cancellation(
int a_code );
117 if( f_canceled.load() )
return;
118 f_canceled.store(
true );
119 this->do_cancellation( a_code );
124 if( ! f_canceled.load() )
return;
125 f_canceled.store(
false );
126 this->do_reset_cancellation();
131 return f_canceled.load();
137 f_wrapped->cancel( a_code );
std::shared_ptr< cancelable_wrapper > wrap_cancelable(cancelable &a_cancelable)
Convenience function to create a cancelable_wrapper.
bool is_canceled() const
check canceled state
virtual void do_cancellation(int a_code)
void reset_cancel()
reset to non-canceled state
std::atomic< bool > f_canceled
void cancel(int a_code=0)
asynchronous cancel function
Base class for a cancelable object (i.e. an object that can be canceled by scarab::signal_handler or ...
Lightweight wrapper for a cancelable object only temporarily added to signal_handler.