1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2024-12-27 04:32:55 +00:00

Improvements in the update callback system

- a function for easier access to the members of the tuple
- the is_done() function
This commit is contained in:
Pavel Labath 2011-03-20 16:53:15 +01:00
parent 0eaf5edbb8
commit 367bb58dae

View File

@ -85,7 +85,7 @@ namespace conky {
friend void conky::run_all_callbacks();
protected:
callback_base(size_t hash_, uint32_t period_, bool wait_, bool use_pipe = false)
callback_base(size_t hash_, uint32_t period_, bool wait_, bool use_pipe)
: thread(NULL), hash(hash_), period(period_), remaining(0),
pipefd(use_pipe ? pipe2(O_CLOEXEC) : std::pair<int, int>(-1, -1)),
wait(wait_), done(false), unused(0)
@ -94,6 +94,9 @@ namespace conky {
int donefd()
{ return pipefd.first; }
bool is_done()
{ return done; }
// to be implemented by descendant classes
virtual void work() = 0;
@ -200,16 +203,24 @@ namespace conky {
virtual bool operator==(const callback_base &other)
{ return tuple == dynamic_cast<const callback &>(other).tuple; }
protected:
public:
typedef std::tuple<Keys...> Tuple;
protected:
const Tuple tuple;
Result result;
template<size_t i>
typename std::add_lvalue_reference<
const typename std::tuple_element<i, Tuple>::type
>::type
get()
{ return std::get<i>(tuple); }
public:
callback(uint32_t period_, bool wait_, const Tuple &tuple_)
callback(uint32_t period_, bool wait_, const Tuple &tuple_, bool use_pipe = false)
: callback_base(priv::hash_tuple<sizeof...(Keys), Keys...>::hash(tuple_),
period_, wait_),
period_, wait_, use_pipe),
tuple(tuple_)
{}