diff options
author | unknown <andrey@fifo.vaih.whnetz> | 2006-08-31 17:18:39 +0200 |
---|---|---|
committer | unknown <andrey@fifo.vaih.whnetz> | 2006-08-31 17:18:39 +0200 |
commit | 0410cc3a0c87582fe9d749f5e007dcdb1b9848e1 (patch) | |
tree | 7578f63a766b0ce331cbafad99ef748c185822f1 /sql/sql_binlog.cc | |
parent | 3e4b79d9cafea4d1e86ddba6c8f5658f4c4ef23c (diff) | |
download | mariadb-git-0410cc3a0c87582fe9d749f5e007dcdb1b9848e1.tar.gz |
WL#3337 (Event scheduler new architecture)
This patch makes the relationship between Event_scheduler and Event_queue
unidirectional from the former to the latter.
The change is that the conditional on which the scheduler sleeped has been
moved to the Event_queue and the latter does not call anymore
Event_scheduler::queue_changed(), which in turn has be removed.
sql/event_queue.cc:
Remove dependency of Event_queue on Event_scheduler but not vice versa.
Event_scheduler polls whether there is time to execute an event.
Removed notify_observers() as the way of calling has changed.
Added Event_queue::cond_wait() similar to Event_scheduler::cond_wait().
sql/event_queue.h:
init_queue() does not need anymore Event_scheduler object because
the relationship is now one-way. Event_scheduler knows about Event_queue
but not vice versa.
get_top_execution_if_time() does by itself the waiting instead of
returning abstime. This simplifies the code in Event_scheduler::run()
get_top_execution_if_time() returns only if job_data != NULL or if
the scheduler thread was killed.
notify_observers() is no more used and therefore removed.
Added Event_queue::cond_wait() because now there is waiting on a
conditional variable in Event_queue too (like in Event_scheduler for
::stop()).
sql/event_scheduler.cc:
Change the relationship between Event_scheduler & Event_queue.
Event_queue does not know anymore about Event_scheduler. When
the scheduler calls get_top_element_if_time() it may fall asleep
on a conditional of Event_queue, if either the queue is empty or
it's still not time for activation. When the method returns it
will return a non-null address, namely an object to be executed.
If the return value is NULL, the thread was killed by a call to
Event_scheduler::stop() (we assert this).
sql/event_scheduler.h:
Remove queue_changed() as it is obsoleted by making the relationship
between Event_scheduler and Event_queue one-way, from the former to the
latter. Event_queue now does not know about Event_scheduler.
get_state() is changed to is_running(). The state enum should be private,
as it is not needed to be seen from outside anymore.
sql/events.cc:
Event_queue does not need anymore a pointer to Event_scheduler.
Diffstat (limited to 'sql/sql_binlog.cc')
0 files changed, 0 insertions, 0 deletions