use {
crate::{ic_logger_msg, log_collector::LogCollector},
itertools::Itertools,
cbe_sdk::{instruction::InstructionError, pubkey::Pubkey},
std::{cell::RefCell, rc::Rc},
};
pub fn program_invoke(
log_collector: &Option<Rc<RefCell<LogCollector>>>,
program_id: &Pubkey,
invoke_depth: usize,
) {
ic_logger_msg!(
log_collector,
"Program {} invoke [{}]",
program_id,
invoke_depth
);
}
pub fn program_log(log_collector: &Option<Rc<RefCell<LogCollector>>>, message: &str) {
ic_logger_msg!(log_collector, "Program log: {}", message);
}
pub fn program_data(log_collector: &Option<Rc<RefCell<LogCollector>>>, data: &[&[u8]]) {
ic_logger_msg!(
log_collector,
"Program data: {}",
data.iter().map(base64::encode).join(" ")
);
}
pub fn program_return(
log_collector: &Option<Rc<RefCell<LogCollector>>>,
program_id: &Pubkey,
data: &[u8],
) {
ic_logger_msg!(
log_collector,
"Program return: {} {}",
program_id,
base64::encode(data)
);
}
pub fn program_success(log_collector: &Option<Rc<RefCell<LogCollector>>>, program_id: &Pubkey) {
ic_logger_msg!(log_collector, "Program {} success", program_id);
}
pub fn program_failure(
log_collector: &Option<Rc<RefCell<LogCollector>>>,
program_id: &Pubkey,
err: &InstructionError,
) {
ic_logger_msg!(log_collector, "Program {} failed: {}", program_id, err);
}