9 #ifndef __libutilxx__sella__util__Task_H__
10 #define __libutilxx__sella__util__Task_H__
12 #include "../../common.h"
23 #define SELLA_UTIL_TASK_DELAY_SEC_DEF 1
24 #define SELLA_UTIL_TASK_DELAY_USEC_DEF 500000
29 static const timeval delay_def = { SELLA_UTIL_TASK_DELAY_SEC_DEF, SELLA_UTIL_TASK_DELAY_USEC_DEF };
30 static const timeval notset = { 0, 0 };
36 typedef std::shared_ptr<Task> shared;
38 typedef std::function<void(void)> callback;
41 size_t operator()(
const shared &a)
const {
42 return (
size_t) a.get();
47 Task(Task::callback &callback,
void*
object = NULL,
int priority = 0);
56 Task& setTimer(
const std::chrono::system_clock::time_point &time);
57 Task& setTimer(timeval &timer);
58 Task& setTimer(time_t &timer);
59 Task& setDelay(
const std::chrono::system_clock::duration &duration);
60 Task& setDelay(time_t sec = 0, suseconds_t usec = 0);
61 Task& setNoDelay(
void);
62 Task& setPriority(
int priority);
63 Task& setCallback(Task::callback &callback,
void *
object = NULL);
64 Task& setObject(
void *
object);
65 Task& setData(std::vector<void*> &data);
66 Task& addData(
void *data);
68 const timeval& getTimer(
void)
const;
69 const timeval getDelay(
void)
const;
70 uint64_t getDelayMsec(
void)
const;
71 uint64_t getDelayUsec(
void)
const;
72 int getPriority(
void)
const;
73 const Task::callback& getCallback(
void)
const;
74 void* getObject(
void)
const;
75 std::vector<void*> getData(
void)
const;
76 void* getData(
size_t pos)
const throw (std::out_of_range);
78 bool isReady(
void)
const;
82 static const Task::shared shared_ptr(
void) throw ();
83 static const
Task::shared shared_ptr(
Task::callback &callback,
void *
object = NULL,
int priority = 0);
85 static const timeval getDelay(const shared task, const timeval def = delay_def);
86 static
bool compareTimer(const shared task, const timeval now = notset);
94 std::vector<
void*> data;