Added simple method binder and system clock getter for dispatcher

This commit is contained in:
Pavel Kirienko
2014-03-07 22:14:54 +04:00
parent 93d06a2494
commit edb6a58d1b
2 changed files with 24 additions and 0 deletions
@@ -89,6 +89,9 @@ public:
IOutgoingTransferRegistry& getOutgoingTransferRegistry() { return outgoing_transfer_reg_; }
NodeID getSelfNodeID() const { return self_node_id_; }
const ISystemClock& getSystemClock() const { return sysclock_; }
ISystemClock& getSystemClock() { return sysclock_; }
};
}
@@ -74,6 +74,27 @@ template<bool> struct BooleanType { };
typedef BooleanType<true> TrueType;
typedef BooleanType<false> FalseType;
/**
* Makeshift binder
*/
template <typename ObjectPtr, typename MemFunPtr>
class MethodBinder
{
ObjectPtr obj_;
MemFunPtr fun_;
public:
MethodBinder(ObjectPtr o, MemFunPtr f) : obj_(o), fun_(f) { }
void operator()() { (obj_->*fun_)(); }
template <typename Par1>
void operator()(Par1 p1) { (obj_->*fun_)(p1); }
template <typename Par1, typename Par2>
void operator()(Par1 p1, Par2 p2) { (obj_->*fun_)(p1, p2); }
};
}
/// Ensure that conditional comilation macros are present