Removed interval tasks to be normal tasks
This commit is contained in:
parent
27ebcc0b65
commit
37e686b8c9
20
src/lib.rs
20
src/lib.rs
@ -13,7 +13,7 @@ use std::{
|
|||||||
net::ToSocketAddrs,
|
net::ToSocketAddrs,
|
||||||
path::Path,
|
path::Path,
|
||||||
sync::Arc,
|
sync::Arc,
|
||||||
time::{Duration, SystemTime},
|
time::SystemTime,
|
||||||
};
|
};
|
||||||
|
|
||||||
use async_native_tls::TlsStream;
|
use async_native_tls::TlsStream;
|
||||||
@ -171,7 +171,7 @@ pub struct Context {
|
|||||||
default_system: Option<StoredSystem>,
|
default_system: Option<StoredSystem>,
|
||||||
invalid_system: Option<StoredSystem>,
|
invalid_system: Option<StoredSystem>,
|
||||||
systems: HashMap<String, StoredSystem>,
|
systems: HashMap<String, StoredSystem>,
|
||||||
interval_tasks: Vec<(Duration, StoredSystem)>,
|
tasks: Vec<StoredSystem>,
|
||||||
factory: Arc<RwLock<Factory>>,
|
factory: Arc<RwLock<Factory>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -310,13 +310,12 @@ impl Context {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn run_interval_tasks(&mut self, tx: mpsc::Sender<Response>) {
|
pub async fn run_tasks(&mut self, tx: mpsc::Sender<Response>) {
|
||||||
for (task_duration, mut task) in std::mem::take(&mut self.interval_tasks) {
|
for mut task in std::mem::take(&mut self.tasks) {
|
||||||
let fact = self.factory.clone();
|
let fact = self.factory.clone();
|
||||||
let task_tx = tx.clone();
|
let task_tx = tx.clone();
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
loop {
|
loop {
|
||||||
tokio::time::sleep(task_duration).await;
|
|
||||||
let resp = task.run(
|
let resp = task.run(
|
||||||
&IrcPrefix {
|
&IrcPrefix {
|
||||||
nick: "",
|
nick: "",
|
||||||
@ -359,7 +358,7 @@ impl Irc {
|
|||||||
default_system: None,
|
default_system: None,
|
||||||
invalid_system: None,
|
invalid_system: None,
|
||||||
systems: HashMap::default(),
|
systems: HashMap::default(),
|
||||||
interval_tasks: Vec::new(),
|
tasks: Vec::new(),
|
||||||
factory: Arc::new(RwLock::new(Factory::default())),
|
factory: Arc::new(RwLock::new(Factory::default())),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -407,16 +406,13 @@ impl Irc {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn add_interval_task<I, S: for<'a> System + Send + Sync + 'static>(
|
pub async fn add_task<I, S: for<'a> System + Send + Sync + 'static>(
|
||||||
&mut self,
|
&mut self,
|
||||||
duration: Duration,
|
|
||||||
system: impl for<'a> IntoSystem<I, System = S>,
|
system: impl for<'a> IntoSystem<I, System = S>,
|
||||||
) -> &mut Self {
|
) -> &mut Self {
|
||||||
{
|
{
|
||||||
let mut context = self.context.write().await;
|
let mut context = self.context.write().await;
|
||||||
context
|
context.tasks.push(Box::new(system.into_system()));
|
||||||
.interval_tasks
|
|
||||||
.push((duration, Box::new(system.into_system())));
|
|
||||||
}
|
}
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
@ -546,7 +542,7 @@ impl Irc {
|
|||||||
{
|
{
|
||||||
let mut context = self.context.write().await;
|
let mut context = self.context.write().await;
|
||||||
context.register();
|
context.register();
|
||||||
context.run_interval_tasks(tx).await;
|
context.run_tasks(tx).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
let stream = self.stream.take().unwrap();
|
let stream = self.stream.take().unwrap();
|
||||||
|
Loading…
Reference in New Issue
Block a user