proper join handling at custom
All checks were successful
ci/woodpecker/pr/cargo-checks Pipeline was successful
All checks were successful
ci/woodpecker/pr/cargo-checks Pipeline was successful
This commit is contained in:
parent
b08d91af5d
commit
8da8460e47
2 changed files with 36 additions and 16 deletions
|
@ -622,7 +622,10 @@ pub struct Routine {
|
||||||
exec_body: bot_actions::actions_util::ExecBody,
|
exec_body: bot_actions::actions_util::ExecBody,
|
||||||
// parent_params : Option<ExecBodyParams> ,
|
// parent_params : Option<ExecBodyParams> ,
|
||||||
parent_params : ExecBodyParams ,
|
parent_params : ExecBodyParams ,
|
||||||
pub join_handle : Option<JoinHandle<()>> ,
|
// pub join_handle : Option<JoinHandle<()>> ,
|
||||||
|
// pub join_handle : Option<JoinHandle<()>> ,
|
||||||
|
// pub join_handle : Option<Arc<RwLock<JoinHandle<()>>>> ,
|
||||||
|
pub join_handle : Option<Arc<RwLock<JoinHandle<()>>>> ,
|
||||||
start_time : Option<DateTime<Local>> ,
|
start_time : Option<DateTime<Local>> ,
|
||||||
complete_iterations : i64 ,
|
complete_iterations : i64 ,
|
||||||
remaining_iterations : Option<i64> ,
|
remaining_iterations : Option<i64> ,
|
||||||
|
@ -977,7 +980,7 @@ impl Routine {
|
||||||
// let self_ref = Arc::clone(&trg_routine_ar);
|
// let self_ref = Arc::clone(&trg_routine_ar);
|
||||||
// trg_routine_ar.write().await.join_handle = innerhelper(trg_routine_ar.clone()).await;
|
// trg_routine_ar.write().await.join_handle = innerhelper(trg_routine_ar.clone()).await;
|
||||||
{
|
{
|
||||||
trg_routine_ar.write().await.join_handle = Some(runonce_innerhelper(trg_routine_ar.clone()).await);
|
trg_routine_ar.write().await.join_handle = Some(Arc::new(RwLock::new(runonce_innerhelper(trg_routine_ar.clone()).await)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// if let Some(a) = &trg_routine_ar.read().await.join_handle {
|
// if let Some(a) = &trg_routine_ar.read().await.join_handle {
|
||||||
|
|
|
@ -17,6 +17,7 @@ const OF_CMD_CHANNEL:Channel = Channel(String::new());
|
||||||
use casual_logger::Log;
|
use casual_logger::Log;
|
||||||
use rand::Rng;
|
use rand::Rng;
|
||||||
use tokio::sync::RwLock;
|
use tokio::sync::RwLock;
|
||||||
|
use std::borrow::Borrow;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use crate::core::bot_actions::ExecBodyParams;
|
use crate::core::bot_actions::ExecBodyParams;
|
||||||
|
@ -88,19 +89,19 @@ async fn test3_body(params : ExecBodyParams) {
|
||||||
|
|
||||||
async fn rtestbody(params : ExecBodyParams) {
|
async fn rtestbody(params : ExecBodyParams) {
|
||||||
|
|
||||||
let bot = Arc::clone(¶ms.bot);
|
// let bot = Arc::clone(¶ms.bot);
|
||||||
|
|
||||||
let botlock = bot.read().await;
|
// let botlock = bot.read().await;
|
||||||
|
|
||||||
// uses chat.say_in_reply_to() for the bot controls for messages
|
// // uses chat.say_in_reply_to() for the bot controls for messages
|
||||||
botlock
|
// botlock
|
||||||
.botmgrs
|
// .botmgrs
|
||||||
.chat
|
// .chat
|
||||||
.say_in_reply_to(
|
// .say_in_reply_to(
|
||||||
¶ms.msg.clone(),
|
// ¶ms.msg.clone(),
|
||||||
String::from("Inner Routine Loop Message"),
|
// String::from("Inner Routine Loop Message"),
|
||||||
params.clone()
|
// params.clone()
|
||||||
).await;
|
// ).await;
|
||||||
|
|
||||||
let logmsg_botact = match *params.curr_act.read().await {
|
let logmsg_botact = match *params.curr_act.read().await {
|
||||||
BotAction::C(_) => "command",
|
BotAction::C(_) => "command",
|
||||||
|
@ -115,10 +116,16 @@ async fn test3_body(params : ExecBodyParams) {
|
||||||
Some(¶ms.msg),
|
Some(¶ms.msg),
|
||||||
);
|
);
|
||||||
Log::flush();
|
Log::flush();
|
||||||
|
|
||||||
|
for _ in 0..5 {
|
||||||
|
println!("tester");
|
||||||
|
sleep(Duration::from_secs_f64(0.5)).await;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
botlog::debug(
|
botlog::debug(
|
||||||
format!("TEST3_BODY BEFORE FROM CALL : module - {:?} ; channel - {:?}",
|
format!("RTESTBODY : module - {:?} ; channel - {:?}",
|
||||||
module,channel
|
module,channel
|
||||||
).as_str(),
|
).as_str(),
|
||||||
Some("experiment003 > test3_body".to_string()),
|
Some("experiment003 > test3_body".to_string()),
|
||||||
|
@ -190,10 +197,20 @@ async fn test3_body(params : ExecBodyParams) {
|
||||||
params.clone()
|
params.clone()
|
||||||
).await;
|
).await;
|
||||||
|
|
||||||
newr.clone().write().await.join_handle.take().expect("Issue with join handle").await.unwrap();
|
// [x] Will not be handling JoinHandles here . If immediate abort() handling is required, below is an example that works
|
||||||
|
/*
|
||||||
|
|
||||||
// newr.read().await.join_handle.unwrap().await.unwrap();
|
|
||||||
|
|
||||||
|
let a = newr.clone().read().await.join_handle.clone();
|
||||||
|
match a {
|
||||||
|
Some(b) => {
|
||||||
|
b.read().await.borrow().abort(); // [x] <-- This aborts if wanting to abort immediately
|
||||||
|
//()
|
||||||
|
},
|
||||||
|
None => (),
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue