Choreonoid  1.5
LazySignal.h
Go to the documentation of this file.
1 
5 #ifndef CNOID_BASE_LAZY_SIGNAL_H
6 #define CNOID_BASE_LAZY_SIGNAL_H
7 
8 #include "LazyCaller.h"
9 #include <cnoid/Signal>
10 #include <vector>
11 #include "exportdecl.h"
12 
13 namespace cnoid {
14 
16 {
17 public:
18  void request();
19  void requestBlocking(Connection connection){
20  connectionsToBlock.push_back(connection);
21  }
22 protected:
24  LazySignalBase(boost::function<void()> emitFunction, int priority);
25  boost::function<void()> emitFunction;
26  std::vector<Connection> connectionsToBlock;
27  virtual void defaultEmitFunction() = 0;
28 
29 private:
30  bool doEmit();
31 };
32 
33 template <class SignalType> class LazySignal : public LazySignalBase
34 {
35 public:
36  LazySignal() { }
37 
38  LazySignal(boost::function<void()> emitFunction, int priority = LazyCaller::PRIORITY_HIGH)
39  : LazySignalBase(emitFunction, priority) {
40  }
41 
42  SignalType& signal() { return signal_; }
43 
44 protected:
45  virtual void defaultEmitFunction() {
46  signal_();
47  }
48 
49 private:
50  SignalType signal_;
51 };
52 
53 }
54 
55 #endif
LazySignal()
Definition: LazySignal.h:36
Definition: LazySignal.h:33
void requestBlocking(Connection connection)
Definition: LazySignal.h:19
Definition: LazyCaller.h:29
boost::function< void()> emitFunction
Definition: LazySignal.h:25
Definition: LazySignal.h:15
LazySignal(boost::function< void()> emitFunction, int priority=LazyCaller::PRIORITY_HIGH)
Definition: LazySignal.h:38
Definition: LazyCaller.h:20
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
Definition: Signal.h:107
std::vector< Connection > connectionsToBlock
Definition: LazySignal.h:26
virtual void defaultEmitFunction()
Definition: LazySignal.h:45
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37
SignalType & signal()
Definition: LazySignal.h:42