libtasks Documentation  1.6
disposable.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013-2014 ADTECH GmbH
3  * Licensed under MIT (https://github.com/adtechlabs/libtasks/blob/master/COPYING)
4  *
5  * Author: Andreas Pohl
6  */
7 
8 #ifndef _TASKS_DISPOSABLE_H_
9 #define _TASKS_DISPOSABLE_H_
10 
11 #include <atomic>
12 
13 namespace tasks {
14 
23 class disposable {
24  public:
26  virtual ~disposable() {}
27 
33  inline bool can_dispose() const { return m_can_dispose; }
34 
38  inline void disable_dispose() { m_can_dispose = false; }
39 
43  inline void enable_dispose() { m_can_dispose = true; }
44 
51  virtual void dispose(worker*) = 0;
52 
53  private:
54  std::atomic<bool> m_can_dispose;
55 };
56 
57 } // tasks
58 
59 #endif // _TASKS_DISPOSABLE_H_
virtual ~disposable()
Definition: disposable.h:26
Base class for objects/tasks that can be deleted.
Definition: disposable.h:23
std::atomic< bool > m_can_dispose
Definition: disposable.h:54
void disable_dispose()
Mark a task for being not disposable.
Definition: disposable.h:38
void enable_dispose()
Mark a task for being disposable.
Definition: disposable.h:43
bool can_dispose() const
Check if a task can be disposed or not.
Definition: disposable.h:33
virtual void dispose(worker *)=0
Dispose an object.