#[doc(hidden)]
#[macro_export]
macro_rules! __canic_start_nonroot_lifecycle_core {
($canister_role:expr) => {
#[::canic::cdk::init]
fn init(payload: ::canic::dto::abi::v1::CanisterInitPayload, args: Option<Vec<u8>>) {
let (config_str, config_path) = $crate::__canic_load_config!();
$crate::__internal::core::api::lifecycle::LifecycleApi::init_nonroot_canister(
$canister_role,
payload,
args.clone(),
config_str,
config_path,
);
$crate::__canic_start_nonroot_user_timers!(args);
}
#[::canic::cdk::post_upgrade]
fn post_upgrade() {
let (config_str, config_path) = $crate::__canic_load_config!();
$crate::__internal::core::api::lifecycle::LifecycleApi::post_upgrade_nonroot_canister(
$canister_role,
config_str,
config_path,
);
$crate::__canic_start_nonroot_upgrade_timers!();
}
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __canic_start_root_lifecycle_core {
() => {
#[::canic::cdk::init]
fn init(identity: ::canic::dto::subnet::SubnetIdentity) {
let (config_str, config_path) = $crate::__canic_load_config!();
$crate::__internal::core::api::lifecycle::LifecycleApi::init_root_canister(
identity,
config_str,
config_path,
);
$crate::__canic_start_root_user_timers!();
}
#[::canic::cdk::post_upgrade]
fn post_upgrade() {
let (config_str, config_path) = $crate::__canic_load_config!();
$crate::__internal::core::api::lifecycle::LifecycleApi::post_upgrade_root_canister(
config_str,
config_path,
);
$crate::__canic_start_root_upgrade_timers!();
}
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __canic_start_nonroot_user_timers {
($args:expr) => {
$crate::__internal::core::api::timer::TimerApi::set_lifecycle_timer(
::std::time::Duration::ZERO,
"canic:user:init",
async move {
canic_setup().await;
canic_install($args).await;
},
);
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __canic_start_nonroot_upgrade_timers {
() => {
$crate::__internal::core::api::timer::TimerApi::set_lifecycle_timer(
::core::time::Duration::ZERO,
"canic:user:init",
async move {
canic_setup().await;
canic_upgrade().await;
},
);
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __canic_start_root_user_timers {
() => {
$crate::__internal::core::api::timer::TimerApi::set_lifecycle_timer(
::core::time::Duration::ZERO,
"canic:user:init",
async move {
canic_setup().await;
canic_install().await;
},
);
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __canic_start_root_upgrade_timers {
() => {
$crate::__internal::core::api::timer::TimerApi::set_lifecycle_timer(
::core::time::Duration::ZERO,
"canic:user:init",
async move {
canic_setup().await;
canic_upgrade().await;
},
);
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __canic_start_nonroot_capability_bundles {
() => {
$crate::canic_endpoints!();
$crate::canic_endpoints_nonroot!();
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __canic_start_root_capability_bundles {
() => {
$crate::canic_endpoints!();
$crate::canic_endpoints_root!();
};
}
#[macro_export]
macro_rules! start {
($canister_role:expr) => {
$crate::__canic_start_nonroot_lifecycle_core!($canister_role);
$crate::__canic_start_nonroot_capability_bundles!();
};
}
#[macro_export]
macro_rules! start_root {
() => {
$crate::__canic_start_root_lifecycle_core!();
$crate::__canic_start_root_capability_bundles!();
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __canic_load_config {
() => {{
let config_path = env!("CANIC_CONFIG_PATH");
let config_str = include_str!(env!("CANIC_CONFIG_PATH"));
(config_str, config_path)
}};
}