31 class AsyncObject :
public AsyncEvent {
34 typedef void (*FuncPtr) (
void *);
41 AsyncObject () : func (0), farg(0) {}
45 virtual ~AsyncObject() {}
48 virtual void Deliver () {
49 if ( func ) (*func)(farg);
54 inline static void Invoke (FuncPtr fnx,
void *arg) {
55 AsyncObject *obj =
new AsyncObject;
58 Event::Manager::GetManager()->Queue (obj, 0);
62 inline static void Invoke (FuncPtr fnx,
void *arg,
unsigned msecs) {
63 AsyncObject *obj =
new AsyncObject;
66 Event::Manager::GetManager()->QueueAt (obj, msecs);
70 inline static void Invoke (FuncPtr fnx,
void *arg,
71 const struct timespec *abstime) {
72 AsyncObject *obj =
new AsyncObject;
75 Event::Manager::GetManager()->QueueAt (obj, abstime);
82 template <
class C>
class AsyncMethod :
public AsyncEvent {
84 typedef void (C::*MethodPtr) ();
90 AsyncMethod () : method (0) {}
94 virtual ~AsyncMethod() {}
97 virtual void Deliver () {
98 if ( method &&
object ) (
object->*method)();
103 inline static void Invoke (C *obj, MethodPtr fnx) {
104 AsyncMethod *aobj =
new AsyncMethod;
107 Event::Manager::GetManager()->Queue (aobj, 0);
114 template <
class C,
class A>
class AsyncMethodArg :
public AsyncEvent {
116 typedef void (C::*MethodPtr) (A argument);
123 AsyncMethodArg () : method (0), marg(0) {}
127 virtual ~AsyncMethodArg() {}
130 virtual void Deliver () {
131 if ( method &&
object ) (
object->*method)(marg);
136 inline static void Invoke (C *obj, MethodPtr fnx, A arg) {
137 AsyncMethodArg *aobj =
new AsyncMethodArg;
141 Event::Manager::GetManager()->Queue (aobj, 0);
150IC_CDECL EVENTSVC_DLL
void EventAsyncDispatch (
151 void (*func)(
void *),