FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
mysql/sql/event_queue.h at master · sateeshgithub/mysql · GitHub
sateeshgithub
/
mysql
Public
forked from
twitter-forks/mysql
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
mysql
/
sql
/
event_queue.h
Copy path
More file actions
More file actions
Latest commit
History
History
History
135 lines (98 loc) · 3.25 KB
Breadcrumbs
mysql
/
sql
/
event_queue.h
Copy path
File metadata and controls
135 lines (98 loc) · 3.25 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#
ifndef
_EVENT_QUEUE_H_
#
define
_EVENT_QUEUE_H_
/*
Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
/*
*
@addtogroup Event_Scheduler
@{
@file event_queue.h
Queue of events awaiting execution.
*/
#
ifdef
HAVE_PSI_INTERFACE
extern
PSI_mutex_key key_LOCK_event_queue;
extern
PSI_cond_key key_COND_queue_state;
#
endif
/*
HAVE_PSI_INTERFACE
*/
#
include
"
queues.h
"
//
QUEUE
#
include
"
sql_string.h
"
/*
LEX_STRING
*/
#
include
"
my_time.h
"
/*
my_time_t, interval_type
*/
class
Event_basic
;
class
Event_queue_element
;
class
Event_queue_element_for_exec
;
class
THD
;
/*
*
Queue of active events awaiting execution.
*/
class
Event_queue
{
public:
Event_queue
();
~Event_queue
();
bool
init_queue
(
THD
*thd);
/*
Methods for queue management follow
*/
bool
create_event
(
THD
*thd, Event_queue_element *new_element,
bool
*created);
void
update_event
(
THD
*thd,
LEX_STRING
dbname,
LEX_STRING
name,
Event_queue_element *new_element);
void
drop_event
(
THD
*thd,
LEX_STRING
dbname,
LEX_STRING
name);
void
drop_schema_events
(
THD
*thd,
LEX_STRING
schema);
void
recalculate_activation_times
(
THD
*thd);
bool
get_top_for_execution_if_time
(
THD
*thd,
Event_queue_element_for_exec **event_name);
void
dump_internal_status
();
private:
void
empty_queue
();
void
deinit_queue
();
/*
helper functions for working with mutexes & conditionals
*/
void
lock_data
(
const
char
*func, uint line);
void
unlock_data
(
const
char
*func, uint line);
void
cond_wait
(
THD
*thd,
struct
timespec
*abstime,
const
char
* msg,
const
char
*func, uint line);
void
find_n_remove_event
(
LEX_STRING
db,
LEX_STRING
name);
void
drop_matching_events
(
THD
*thd,
LEX_STRING
pattern,
bool
(*)(
LEX_STRING
, Event_basic *));
void
dbug_dump_queue
(
time_t
now);
/*
LOCK_event_queue is the mutex which protects the access to the queue.
*/
mysql_mutex_t
LOCK_event_queue;
mysql_cond_t
COND_queue_state;
/*
The sorted queue with the Event_queue_element objects
*/
QUEUE
queue;
my_time_t
next_activation_at;
uint mutex_last_locked_at_line;
uint mutex_last_unlocked_at_line;
uint mutex_last_attempted_lock_at_line;
const
char
* mutex_last_locked_in_func;
const
char
* mutex_last_unlocked_in_func;
const
char
* mutex_last_attempted_lock_in_func;
bool
mutex_queue_data_locked;
bool
mutex_queue_data_attempting_lock;
bool
waiting_on_cond;
};
/*
*
@} (End of group Event_Scheduler)
*/
#endif
/*
_EVENT_QUEUE_H_
*/
Back
|
FazBrowse Home
|
New Git URL