MCPcopy Create free account
hub / github.com/Botloader/botloader / check_queue_start_worker

Method check_queue_start_worker

components/scheduler/src/scheduler.rs:127–162  ·  view source on GitHub ↗
(&mut self, guild_id: Id<GuildMarker>)

Source from the content-addressed store, hash-verified

125 }
126
127 async fn check_queue_start_worker(&mut self, guild_id: Id<GuildMarker>) {
128 if let Some(index) = self.pending_starts.iter().position(|v| *v == guild_id) {
129 self.pending_starts.remove(index);
130 self.get_or_start_guild(guild_id);
131 }
132
133 // god i wish drain_filter was stable
134 let mut indexes = self
135 .queued_events
136 .iter()
137 .enumerate()
138 .filter_map(|(i, v)| {
139 if v.guild_id == guild_id {
140 Some(i)
141 } else {
142 None
143 }
144 })
145 .collect::<Vec<_>>();
146
147 // reverse to avoid invalidating indexes as we remove their items
148 indexes.reverse();
149
150 let mut evts = indexes
151 .into_iter()
152 .map(|i| self.queued_events.remove(i))
153 .collect::<Vec<_>>();
154
155 // reverse back in the proper order
156 evts.reverse();
157
158 for evt in evts {
159 self.send_or_queue_broker_evt(evt);
160 // self.handle_broker_evt(evt).await;
161 }
162 }
163
164 fn handle_guild_handler_event(&mut self, guild_id: Id<GuildMarker>, event: VmSessionEvent) {
165 match event {

Callers 2

runMethod · 0.80
wait_all_shutdownMethod · 0.80

Calls 3

removeMethod · 0.80
get_or_start_guildMethod · 0.80

Tested by

no test coverage detected