This commit is contained in:
ModulatingForce 2024-03-29 23:51:41 -04:00
parent fcf4f3f7cf
commit a38c84b8f4
3 changed files with 67 additions and 15 deletions

View file

@ -52,9 +52,6 @@ impl ExecBodyParams {
pub async fn get_channel(&self) -> Option<Channel> { pub async fn get_channel(&self) -> Option<Channel> {
// THIS IS INCORRECT - BELOW MAY BE PULLING THE PARENT BOTACTION
// NOT THE CURRENT BOT ACTION
let curr_act = Arc::clone(&self.curr_act); let curr_act = Arc::clone(&self.curr_act);
let parent_act_lock = curr_act.read().await; let parent_act_lock = curr_act.read().await;
@ -74,6 +71,7 @@ impl ExecBodyParams {
BotAction::R(r) => { BotAction::R(r) => {
// let temp = r.module.clone(); // let temp = r.module.clone();
// Some(temp) // Some(temp)
dbg!("Core > ExecBodyParams > GetChannels - routine identified");
Some(r.read().await.channel.clone()) Some(r.read().await.channel.clone())
} }
// _ => None // _ => None

View file

@ -1232,6 +1232,10 @@ impl Routine {
} }
// pub async fn execute(routine:&Routine, params : ExecBodyParams) {
// (routine.exec_body)(params).await;
// }
async fn loopbody(&mut self) async fn loopbody(&mut self)
// [x] => 03.27 - COMPLETED // [x] => 03.27 - COMPLETED
{ {
@ -1254,15 +1258,35 @@ impl Routine {
mutlock.parent_params.curr_act = mutlock.self_act_ar.to_owned().unwrap(); mutlock.parent_params.curr_act = mutlock.self_act_ar.to_owned().unwrap();
} }
dbg!("before"); dbg!("Core > Before Guards");
// `self_ar` is the routine you want to read in the execbody i think, but its used to call that execbody. // `self_ar` is the routine you want to read in the execbody i think, but its used to call that execbody.
// So execbody waits for itself to finish. // So execbody waits for itself to finish.
(self_ar.read().await.exec_body)( // (self_ar.read().await.exec_body)(
self_ar.read().await.parent_params.clone() // self_ar.read().await.parent_params.clone()
).await; // ).await;
dbg!("after"); let parent_params = {
let guard1 = self_ar.read().await;
let parent_params = guard1.parent_params.clone();
drop(guard1);
parent_params
};
dbg!("Core > Guarding & Executing Child Execution Body");
{
let guard2 = self_ar.read().await;
(guard2.exec_body)(parent_params).await;
drop(guard2);
}
// (self_ar.read().await.exec_body)(
// parent_params
// ).await;
dbg!("Core > After Execution Body is completed");
// (self.exec_body)( // (self.exec_body)(
// self.parent_params.clone() // self.parent_params.clone()
// ).await; // ).await;

View file

@ -374,9 +374,9 @@ async fn test3_body(params : ExecBodyParams) {
async fn rtestbody(params : ExecBodyParams) { async fn rtestbody(params : ExecBodyParams) {
let guard = params.curr_act.read().await; let guard1 = params.curr_act.read().await;
{ {
let logmsg_botact = match *guard { let logmsg_botact = match *guard1 {
BotAction::C(_) => "command", BotAction::C(_) => "command",
BotAction::R(_) => "routine", BotAction::R(_) => "routine",
BotAction::L(_) => "listener", BotAction::L(_) => "listener",
@ -392,7 +392,7 @@ async fn test3_body(params : ExecBodyParams) {
{ {
let logmsg_botact = match *guard { let logmsg_botact = match &*guard1 {
BotAction::C(_) => "command 2", BotAction::C(_) => "command 2",
BotAction::R(_) => "routine 2", BotAction::R(_) => "routine 2",
BotAction::L(_) => "listener 2", BotAction::L(_) => "listener 2",
@ -406,14 +406,44 @@ async fn test3_body(params : ExecBodyParams) {
Log::flush(); Log::flush();
} }
// drop(guard1);
{ {
dbg!("Custom > within Child Custom fn - Before Critical area");
println!("Critical code area start"); // <= 03.29 - This is printed println!("Critical code area start"); // <= 03.29 - This is printed
if let BotAction::R(c) = &*guard {
println!("{:?}",c.read().await.channel);
}
println!("Critical code area end"); // <= 03.29 - ISSUE This is NOT printed
// if let BotAction::R(c) = &*guard {
// println!("{:?}",c.read().await.channel);
// }
// let routine_channel = if let BotAction::R(c) = &*guard1 {
// dbg!("Custom > within Child Custom fn - During Critical area > Routine Guard ");
// let routineguard = c.read().await;
// Some(routineguard.channel.clone());
// } else {
// None
// };
// let chnl = match &*guard1 {
// BotAction::R(arr) => {
// dbg!("Custom > within Child Custom fn - During Critical area > Before Routine Guard ");
// let routineguard = arr.read().await;
// dbg!("Custom > within Child Custom fn - During Critical area > After Routine Guard ");
// Some(routineguard.channel.clone())
// },
// BotAction::C(_) | BotAction::L(_) => None ,
// } ;
let chnl = params.get_channel().await;
dbg!("Custom > within Child Custom fn - after GetChannel");
println!("{:?}",chnl);
println!("Critical code area end"); // <= 03.29 - ISSUE This is NOT printed
dbg!("Custom > within Child Custom fn - Before Critical area");
// if let BotAction::R(arr) = &*params.curr_act.read().await { // if let BotAction::R(arr) = &*params.curr_act.read().await {
// for curriter in 0..5 { // for curriter in 0..5 {
// println!("tester - Routine - Completed Iterations : {}", // println!("tester - Routine - Completed Iterations : {}",