summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuo Jinghua <sunmoon1997@gmail.com>2009-11-01 21:16:30 +0800
committerLuo Jinghua <sunmoon1997@gmail.com>2009-11-01 21:16:30 +0800
commite8bb5240b38db6f61c6b72a1d1b8cb52c2c0c83e (patch)
tree5e84416fb5f4037db6ced19dcc0248709fafaa76
parentf4a0df4aab19c3900e4051fd1e96869f8f00abd9 (diff)
milkway: add mw-source::timeout
-rw-r--r--milkway/mw-timeout-source.c14
-rw-r--r--milkway/mw-timeout-source.h3
2 files changed, 17 insertions, 0 deletions
diff --git a/milkway/mw-timeout-source.c b/milkway/mw-timeout-source.c
index bfa0738..1489204 100644
--- a/milkway/mw-timeout-source.c
+++ b/milkway/mw-timeout-source.c
@@ -91,6 +91,17 @@ mw_timeout_set_expiration (mw_timeout_source_t *self,
}
}
+static mw_bool_t
+source_dispatch_cb(mw_source_t *self,
+ mw_pointer_t user_data)
+{
+ mw_timeout_source_type_t *type = (mw_timeout_source_type_t*)MW_TYPE(self);
+
+ if (!type->timeout)
+ return MW_FALSE;
+ return type->timeout((mw_timeout_source_t*)self);
+}
+
mw_timeout_source_t*
mw_timeout_source_init(mw_timeout_source_t *self,
int interval,
@@ -104,6 +115,9 @@ mw_timeout_source_init(mw_timeout_source_t *self,
self->interval = interval;
self->granularity = granularity;
+ mw_source_set_callback(&self->base, source_dispatch_cb,
+ NULL, NULL);
+
mw_timeval_clear(&self->expiration);
mw_get_system_time(&current_time);
diff --git a/milkway/mw-timeout-source.h b/milkway/mw-timeout-source.h
index e6f1819..f68486e 100644
--- a/milkway/mw-timeout-source.h
+++ b/milkway/mw-timeout-source.h
@@ -29,6 +29,9 @@ typedef struct _mw_timeout_source mw_timeout_source_t;
struct _mw_timeout_source_type {
mw_source_type_t base;
+
+ mw_bool_t
+ (*timeout) (mw_timeout_source_t *self);
};
struct _mw_timeout_source {