pub trait KernelCallbackObject: Sized {
type LockData: Default + Clone;
type CallFrameData: CallFrameReferences;
type Init: Clone;
type ExecutionOutput;
type Receipt: ExecutionReceipt;
Show 29 methods
// Required methods
fn init<S: BootStore + CommitableSubstateStore>(
store: &mut S,
executable: &Executable<'_>,
init: Self::Init
) -> Result<Self, RejectionReason>;
fn verify_boot_ref_value(
&mut self,
node_id: &NodeId,
value: &IndexedScryptoValue
) -> Result<StableReferenceType, BootloadingError>;
fn start<Y>(
api: &mut Y,
manifest_encoded_instructions: &[u8],
pre_allocated_addresses: &Vec<PreAllocatedAddress>,
references: &IndexSet<Reference>,
blobs: &IndexMap<Hash, Vec<u8>>
) -> Result<Self::ExecutionOutput, RuntimeError>
where Y: KernelApi<Self>;
fn finish(
&mut self,
store_commit_info: StoreCommitInfo
) -> Result<(), RuntimeError>;
fn create_receipt<S: SubstateDatabase>(
self,
track: Track<'_, S, SpreadPrefixKeyMapper>,
executable: &Executable<'_>,
result: Result<Self::ExecutionOutput, TransactionExecutionError>
) -> Self::Receipt;
fn on_pin_node(&mut self, node_id: &NodeId) -> Result<(), RuntimeError>;
fn on_create_node<Y>(
api: &mut Y,
event: CreateNodeEvent<'_>
) -> Result<(), RuntimeError>
where Y: KernelInternalApi<Self>;
fn on_drop_node<Y>(
api: &mut Y,
event: DropNodeEvent<'_>
) -> Result<(), RuntimeError>
where Y: KernelInternalApi<Self>;
fn on_move_module<Y>(
api: &mut Y,
event: MoveModuleEvent<'_>
) -> Result<(), RuntimeError>
where Y: KernelInternalApi<Self>;
fn on_open_substate<Y>(
api: &mut Y,
event: OpenSubstateEvent<'_>
) -> Result<(), RuntimeError>
where Y: KernelInternalApi<Self>;
fn on_close_substate<Y>(
api: &mut Y,
event: CloseSubstateEvent
) -> Result<(), RuntimeError>
where Y: KernelInternalApi<Self>;
fn on_read_substate<Y>(
api: &mut Y,
event: ReadSubstateEvent<'_>
) -> Result<(), RuntimeError>
where Y: KernelInternalApi<Self>;
fn on_write_substate<Y>(
api: &mut Y,
event: WriteSubstateEvent<'_>
) -> Result<(), RuntimeError>
where Y: KernelInternalApi<Self>;
fn on_set_substate(
&mut self,
event: SetSubstateEvent<'_>
) -> Result<(), RuntimeError>;
fn on_remove_substate(
&mut self,
event: RemoveSubstateEvent<'_>
) -> Result<(), RuntimeError>;
fn on_scan_keys(
&mut self,
event: ScanKeysEvent<'_>
) -> Result<(), RuntimeError>;
fn on_drain_substates(
&mut self,
event: DrainSubstatesEvent<'_>
) -> Result<(), RuntimeError>;
fn on_scan_sorted_substates(
&mut self,
event: ScanSortedSubstatesEvent<'_>
) -> Result<(), RuntimeError>;
fn before_invoke<Y>(
invocation: &KernelInvocation<Self::CallFrameData>,
api: &mut Y
) -> Result<(), RuntimeError>
where Y: KernelApi<Self>;
fn after_invoke<Y>(
output: &IndexedScryptoValue,
api: &mut Y
) -> Result<(), RuntimeError>
where Y: KernelApi<Self>;
fn on_execution_start<Y>(api: &mut Y) -> Result<(), RuntimeError>
where Y: KernelApi<Self>;
fn on_execution_finish<Y>(
message: &CallFrameMessage,
api: &mut Y
) -> Result<(), RuntimeError>
where Y: KernelApi<Self>;
fn on_allocate_node_id<Y>(
entity_type: EntityType,
api: &mut Y
) -> Result<(), RuntimeError>
where Y: KernelApi<Self>;
fn invoke_upstream<Y>(
args: &IndexedScryptoValue,
api: &mut Y
) -> Result<IndexedScryptoValue, RuntimeError>
where Y: KernelApi<Self>;
fn auto_drop<Y>(nodes: Vec<NodeId>, api: &mut Y) -> Result<(), RuntimeError>
where Y: KernelApi<Self>;
fn on_mark_substate_as_transient(
&mut self,
node_id: &NodeId,
partition_number: &PartitionNumber,
substate_key: &SubstateKey
) -> Result<(), RuntimeError>;
fn on_substate_lock_fault<Y>(
node_id: NodeId,
partition_num: PartitionNumber,
offset: &SubstateKey,
api: &mut Y
) -> Result<bool, RuntimeError>
where Y: KernelApi<Self>;
fn on_drop_node_mut<Y>(
node_id: &NodeId,
api: &mut Y
) -> Result<(), RuntimeError>
where Y: KernelApi<Self>;
fn on_move_node<Y>(
node_id: &NodeId,
is_moving_down: bool,
is_to_barrier: bool,
destination_blueprint_id: Option<BlueprintId>,
api: &mut Y
) -> Result<(), RuntimeError>
where Y: KernelApi<Self>;
}
Required Associated Types§
type LockData: Default + Clone
type CallFrameData: CallFrameReferences
type Init: Clone
type ExecutionOutput
type Receipt: ExecutionReceipt
Required Methods§
sourcefn init<S: BootStore + CommitableSubstateStore>(
store: &mut S,
executable: &Executable<'_>,
init: Self::Init
) -> Result<Self, RejectionReason>
fn init<S: BootStore + CommitableSubstateStore>( store: &mut S, executable: &Executable<'_>, init: Self::Init ) -> Result<Self, RejectionReason>
Create the callback object (system layer) with data loaded from the substate store
sourcefn verify_boot_ref_value(
&mut self,
node_id: &NodeId,
value: &IndexedScryptoValue
) -> Result<StableReferenceType, BootloadingError>
fn verify_boot_ref_value( &mut self, node_id: &NodeId, value: &IndexedScryptoValue ) -> Result<StableReferenceType, BootloadingError>
Verifies and returns the type of a given reference used during boot
sourcefn start<Y>(
api: &mut Y,
manifest_encoded_instructions: &[u8],
pre_allocated_addresses: &Vec<PreAllocatedAddress>,
references: &IndexSet<Reference>,
blobs: &IndexMap<Hash, Vec<u8>>
) -> Result<Self::ExecutionOutput, RuntimeError>where
Y: KernelApi<Self>,
fn start<Y>(
api: &mut Y,
manifest_encoded_instructions: &[u8],
pre_allocated_addresses: &Vec<PreAllocatedAddress>,
references: &IndexSet<Reference>,
blobs: &IndexMap<Hash, Vec<u8>>
) -> Result<Self::ExecutionOutput, RuntimeError>where
Y: KernelApi<Self>,
Start execution
sourcefn finish(
&mut self,
store_commit_info: StoreCommitInfo
) -> Result<(), RuntimeError>
fn finish( &mut self, store_commit_info: StoreCommitInfo ) -> Result<(), RuntimeError>
Finish execution
sourcefn create_receipt<S: SubstateDatabase>(
self,
track: Track<'_, S, SpreadPrefixKeyMapper>,
executable: &Executable<'_>,
result: Result<Self::ExecutionOutput, TransactionExecutionError>
) -> Self::Receipt
fn create_receipt<S: SubstateDatabase>( self, track: Track<'_, S, SpreadPrefixKeyMapper>, executable: &Executable<'_>, result: Result<Self::ExecutionOutput, TransactionExecutionError> ) -> Self::Receipt
Create final receipt
fn on_pin_node(&mut self, node_id: &NodeId) -> Result<(), RuntimeError>
fn on_create_node<Y>(
api: &mut Y,
event: CreateNodeEvent<'_>
) -> Result<(), RuntimeError>where
Y: KernelInternalApi<Self>,
fn on_drop_node<Y>(
api: &mut Y,
event: DropNodeEvent<'_>
) -> Result<(), RuntimeError>where
Y: KernelInternalApi<Self>,
fn on_move_module<Y>(
api: &mut Y,
event: MoveModuleEvent<'_>
) -> Result<(), RuntimeError>where
Y: KernelInternalApi<Self>,
fn on_open_substate<Y>(
api: &mut Y,
event: OpenSubstateEvent<'_>
) -> Result<(), RuntimeError>where
Y: KernelInternalApi<Self>,
fn on_close_substate<Y>(
api: &mut Y,
event: CloseSubstateEvent
) -> Result<(), RuntimeError>where
Y: KernelInternalApi<Self>,
fn on_read_substate<Y>(
api: &mut Y,
event: ReadSubstateEvent<'_>
) -> Result<(), RuntimeError>where
Y: KernelInternalApi<Self>,
fn on_write_substate<Y>(
api: &mut Y,
event: WriteSubstateEvent<'_>
) -> Result<(), RuntimeError>where
Y: KernelInternalApi<Self>,
fn on_set_substate( &mut self, event: SetSubstateEvent<'_> ) -> Result<(), RuntimeError>
fn on_remove_substate( &mut self, event: RemoveSubstateEvent<'_> ) -> Result<(), RuntimeError>
fn on_scan_keys(&mut self, event: ScanKeysEvent<'_>) -> Result<(), RuntimeError>
fn on_drain_substates( &mut self, event: DrainSubstatesEvent<'_> ) -> Result<(), RuntimeError>
fn on_scan_sorted_substates( &mut self, event: ScanSortedSubstatesEvent<'_> ) -> Result<(), RuntimeError>
fn before_invoke<Y>(
invocation: &KernelInvocation<Self::CallFrameData>,
api: &mut Y
) -> Result<(), RuntimeError>where
Y: KernelApi<Self>,
fn after_invoke<Y>(
output: &IndexedScryptoValue,
api: &mut Y
) -> Result<(), RuntimeError>where
Y: KernelApi<Self>,
fn on_execution_start<Y>(api: &mut Y) -> Result<(), RuntimeError>where
Y: KernelApi<Self>,
fn on_execution_finish<Y>(
message: &CallFrameMessage,
api: &mut Y
) -> Result<(), RuntimeError>where
Y: KernelApi<Self>,
fn on_allocate_node_id<Y>(
entity_type: EntityType,
api: &mut Y
) -> Result<(), RuntimeError>where
Y: KernelApi<Self>,
fn invoke_upstream<Y>(
args: &IndexedScryptoValue,
api: &mut Y
) -> Result<IndexedScryptoValue, RuntimeError>where
Y: KernelApi<Self>,
fn auto_drop<Y>(nodes: Vec<NodeId>, api: &mut Y) -> Result<(), RuntimeError>where
Y: KernelApi<Self>,
fn on_mark_substate_as_transient( &mut self, node_id: &NodeId, partition_number: &PartitionNumber, substate_key: &SubstateKey ) -> Result<(), RuntimeError>
fn on_substate_lock_fault<Y>(
node_id: NodeId,
partition_num: PartitionNumber,
offset: &SubstateKey,
api: &mut Y
) -> Result<bool, RuntimeError>where
Y: KernelApi<Self>,
fn on_drop_node_mut<Y>(
node_id: &NodeId,
api: &mut Y
) -> Result<(), RuntimeError>where
Y: KernelApi<Self>,
fn on_move_node<Y>(
node_id: &NodeId,
is_moving_down: bool,
is_to_barrier: bool,
destination_blueprint_id: Option<BlueprintId>,
api: &mut Y
) -> Result<(), RuntimeError>where
Y: KernelApi<Self>,
Object Safety§
This trait is not object safe.