use std::sync::Arc;
use std::sync::Mutex;
use log::error;
use crate::api::kafka_publish_message::KafkaPublishMessage;
pub fn add_messages_to_locked_work_vec(
lockable_work_vec: &Arc<Mutex<Vec<KafkaPublishMessage>>>,
mut msgs: Vec<KafkaPublishMessage>,
) -> Result<usize, String> {
let num_to_add = msgs.len();
if num_to_add == 0 {
let err_msg = "no msgs to add";
error!("{err_msg}");
Err(err_msg.to_string())
} else {
match lockable_work_vec.lock() {
Ok(mut local_access_to_work_vec) => {
local_access_to_work_vec.append(&mut msgs);
Ok(local_access_to_work_vec.len())
}
Err(e) => {
let err_msg =
format!("failed to get lock on work vec with err={e}");
error!("{err_msg}");
Err(err_msg)
}
}
}
}