Software /
code /
prosody
Annotate
teal-src/module.d.tl @ 12553:cc0ec0277813 0.12
util.startup: Fix async waiting for last shutdown steps
Observed problem: When shutting down prosody would immediately exit
after waiting for s2s connections to close, skipping the last cleanup
events and reporting the exit reason and code.
This happens because prosody.main_thread is in a waiting state and
queuing startup.shutdown is dispatched trough the main loop via
nexttick, but since the main loop was no longer running at that point it
proceeded to the end of the prosody script and exited there.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 14 Jun 2022 16:28:49 +0200 |
parent | 11941:cfd37453e6b6 |
child | 12502:5862ddf71e3c |
rev | line source |
---|---|
11941
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 local st = require"util.stanza" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 global record moduleapi |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 get_name : function (moduleapi) : string |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 get_host : function (moduleapi) : string |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 enum host_type |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 "global" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 "local" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 "component" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 end |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 get_host_type : function (moduleapi) : host_type |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 set_global : function (moduleapi) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 add_feature : function (moduleapi, string) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 add_identity : function (moduleapi, string, string, string) -- TODO enum? |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 add_extension : function (moduleapi, st.stanza_t) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 fire_event : function (moduleapi, string, any) : any |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 type handler = function (any) : any |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 record util_events |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 -- TODO import def |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 end |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 hook_object_event : function (moduleapi, util_events, string, handler, number) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 unhook_object_event : function (moduleapi, util_events, string, handler) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 hook : function (moduleapi, string, handler, number) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 hook_global : function (moduleapi, string, handler, number) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 hook_tag : function (moduleapi, string, string, handler, number) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 unhook : function (moduleapi, string, handler) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 wrap_object_event : function (moduleapi, util_events, string, handler) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 wrap_event : function (moduleapi, string, handler) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 wrap_global : function (moduleapi, string, handler) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 require : function (moduleapi, string) : table |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 depends : function (moduleapi, string) : table |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 shared : function (moduleapi, string) : table |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 type config_getter = function<A> (moduleapi, string, A) : A |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 get_option : config_getter<any> |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 get_option_scalar : config_getter<nil | boolean | number | string> |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 get_option_string : config_getter<string> |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 get_option_number : config_getter<number> |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 get_option_boolean : config_getter<boolean> |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
39 record util_array |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
40 -- TODO import def |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
41 { any } |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
42 end |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
43 get_option_array : config_getter<util_array> |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
44 record util_set |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
45 -- TODO import def |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
46 _items : { any : boolean } |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
47 end |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
48 get_option_set : function (moduleapi, string, { any }) : util_set |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
49 get_option_inherited_set : function (moduleapi, string, { any }) : util_set |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
50 get_option_path : function (moduleapi, string, string, string) : string |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
51 context : function (moduleapi, string) : moduleapi |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
52 add_item : function (moduleapi, string, any) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
53 remove_item : function (moduleapi, string, any) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
54 get_host_items : function (moduleapi, string) : { any } |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
55 handle_items : function (moduleapi, string, handler, handler, boolean) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
56 provides : function (moduleapi, string, table) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
57 record util_session |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
58 -- TODO import def |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
59 send : function ( st.stanza_t | string ) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
60 end |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
61 send : function (moduleapi, st.stanza_t, util_session) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
62 send_iq : function (moduleapi, st.stanza_t, util_session, number) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
63 broadcast : function (moduleapi, { string }, st.stanza_t, function) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
64 type timer_callback = function (number, ... : any) : number |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
65 add_timer : function (moduleapi, number, timer_callback, ... : any) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
66 get_directory : function (moduleapi) : string |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
67 enum file_mode |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
68 "r" "w" "a" "r+" "w+" "a+" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
69 end |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
70 load_resource : function (moduleapi, string, file_mode) : FILE |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
71 enum store_type |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
72 "keyval" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
73 "map" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
74 "archive" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
75 end |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
76 open_store : function (moduleapi, string, store_type) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
77 enum stat_type |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
78 "amount" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
79 "counter" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
80 "rate" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
81 "distribution" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
82 "sizes" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
83 "times" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
84 end |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
85 record stats_conf |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
86 initial : number |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
87 units : string |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
88 type : string |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
89 end |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
90 measure : function (moduleapi, string, stat_type, stats_conf) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
91 measure_object_event : function (moduleapi, util_events, string, string) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
92 measure_event : function (moduleapi, string, string) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
93 measure_global_event : function (moduleapi, string, string) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
94 enum status_type |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
95 "error" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
96 "warn" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
97 "info" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
98 "core" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
99 end |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
100 set_status : function (moduleapi, status_type, string, boolean) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
101 enum log_level |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
102 "debug" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
103 "info" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
104 "warn" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
105 "error" |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
106 end |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
107 log_status : function (moduleapi, log_level, string, ... : any) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
108 get_status : function (moduleapi) : status_type, string, number |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
109 |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
110 -- added by modulemanager |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
111 name : string |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
112 host : string |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
113 _log : function (log_level, string, ... : any) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
114 log : function (moduleapi, log_level, string, ... : any) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
115 reloading : boolean |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
116 saved_state : any |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
117 record module_environment |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
118 module : moduleapi |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
119 end |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
120 environment : module_environment |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
121 path : string |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
122 resource_path : string |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
123 |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
124 -- methods the module can add |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
125 load : function () |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
126 add_host : function (moduleapi) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
127 save : function () : any |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
128 restore : function (any) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
129 unload : function () |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
130 end |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
131 |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
132 global module : moduleapi |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
133 |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
134 global record common_event |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
135 stanza : st.stanza_t |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
136 record origin |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
137 send : function (st.stanza_t) |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
138 end |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
139 end |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
140 |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
141 global record prosody |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
142 version : string |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
143 end |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
144 |
cfd37453e6b6
teal: Describe the module API interface
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
145 return module |