OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 <boost/function.hpp>
9 #include <tbb/atomic.h>
10 
11 class TaskTrigger {
12 public:
13  typedef boost::function<bool()> FunctionPtr;
14  TaskTrigger(const FunctionPtr& func, int task_id, int task_instance);
15  ~TaskTrigger();
16  void Set();
17  void Reset();
18  // For Test only
19  void set_disable() {
20  bool current = disabled_.fetch_and_store(true);
21  assert(!current);
22  }
23  void set_enable() {
24  bool current = disabled_.fetch_and_store(false);
25  assert(current);
26  Set();
27  }
28  bool disabled() {
29  return disabled_;
30  }
31 
32  // For Test only
33  void set_deferred() {
34  bool current = deferred_.fetch_and_store(true);
35  assert(!current);
36  }
37  void clear_deferred() {
38  bool current = deferred_.fetch_and_store(false);
39  assert(current);
40  }
41  bool deferred() const { return deferred_; }
42  bool IsSet() const { return trigger_; }
43 
44 private:
45  class WorkerTask;
46 
48  int task_id_;
50  tbb::atomic<bool> trigger_;
51  tbb::atomic<bool> disabled_;
52  tbb::atomic<bool> deferred_;
53 };
54 
55 #endif /* defined(__ctrlplane__task_trigger__) */
bool IsSet() const
Definition: task_trigger.h:42
int task_instance_
Definition: task_trigger.h:49
tbb::atomic< bool > deferred_
Definition: task_trigger.h:52
FunctionPtr func_
Definition: task_trigger.h:45
void Reset()
Definition: task_trigger.cc:54
void set_deferred()
Definition: task_trigger.h:33
tbb::atomic< bool > trigger_
Definition: task_trigger.h:50
void set_disable()
Definition: task_trigger.h:19
bool disabled()
Definition: task_trigger.h:28
bool deferred() const
Definition: task_trigger.h:41
boost::function< bool()> FunctionPtr
Definition: task_trigger.h:13
void set_enable()
Definition: task_trigger.h:23
void clear_deferred()
Definition: task_trigger.h:37
tbb::atomic< bool > disabled_
Definition: task_trigger.h:51
TaskTrigger(const FunctionPtr &func, int task_id, int task_instance)
Definition: task_trigger.cc:34