OpenSDN source code
task_trigger.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef __ctrlplane__task_trigger__
6 #define __ctrlplane__task_trigger__
7 
8 #include <atomic>
9 
10 #include <boost/function.hpp>
11 
12 class TaskTrigger {
13 public:
14  typedef boost::function<bool()> FunctionPtr;
15  TaskTrigger(const FunctionPtr& func, int task_id, int task_instance);
16  ~TaskTrigger();
17  void Set();
18  void Reset();
19  // For Test only
20  void set_disable() {
21  bool current = disabled_.exchange(true);
22  assert(!current);
23  }
24  void set_enable() {
25  bool current = disabled_.exchange(false);
26  assert(current);
27  Set();
28  }
29  bool disabled() {
30  return disabled_;
31  }
32 
33  // For Test only
34  void set_deferred() {
35  bool current = deferred_.exchange(true);
36  assert(!current);
37  }
38  void clear_deferred() {
39  bool current = deferred_.exchange(false);
40  assert(current);
41  }
42  bool deferred() const { return deferred_; }
43  bool IsSet() const { return trigger_; }
44 
45 private:
46  class WorkerTask;
47 
49  int task_id_;
51  std::atomic<bool> trigger_;
52  std::atomic<bool> disabled_;
53  std::atomic<bool> deferred_;
54 };
55 
56 #endif /* defined(__ctrlplane__task_trigger__) */
void set_enable()
Definition: task_trigger.h:24
bool IsSet() const
Definition: task_trigger.h:43
boost::function< bool()> FunctionPtr
Definition: task_trigger.h:14
void set_deferred()
Definition: task_trigger.h:34
FunctionPtr func_
Definition: task_trigger.h:46
std::atomic< bool > disabled_
Definition: task_trigger.h:52
bool deferred() const
Definition: task_trigger.h:42
bool disabled()
Definition: task_trigger.h:29
void set_disable()
Definition: task_trigger.h:20
void Reset()
Definition: task_trigger.cc:54
int task_instance_
Definition: task_trigger.h:50
std::atomic< bool > deferred_
Definition: task_trigger.h:53
std::atomic< bool > trigger_
Definition: task_trigger.h:51
void clear_deferred()
Definition: task_trigger.h:38
TaskTrigger(const FunctionPtr &func, int task_id, int task_instance)
Definition: task_trigger.cc:34