On Method Nightly
The on method is the event-driven heart of LightVM, allowing you to hook into specific VM lifecycle events. By registering callbacks, you can react to internal state changes and execution milestones in real-time.
Using TypeScript
For TypeScript, the on method allows you to attach event listeners that execute whenever a registered event is triggered. This is ideal for logging, monitoring VM state changes, or triggering external logic when specific conditions are met.
import { VMEvent } from 'lightvm';
vm.on(VMEvent.Tick, (data) => {
console.log('Event: ', data.event);
console.log('Payload: ', data.payload);
});
vm.run();import { VMEvent } from 'lightvm';
vm.on(VMEvent.Halt, (data) => {
console.log('Event: ', data.event);
console.log('Payload: ', data.payload);
});
vm.halt();
vm.run(); // will not be executedimport { VMEvent } from 'lightvm';
vm.on(VMEvent.Start, (data) => {
console.log('Event: ', data.event);
console.log('Payload: ', data.payload);
});
vm.run();import { VMEvent } from 'lightvm';
vm.on(VMEvent.Finish, (data) => {
console.log('Event: ', data.event);
console.log('Payload: ', data.payload);
});
vm.run();Using Rust
In Rust, the on method enables you to define event handlers that integrate directly with your system's logic. This allows for robust asynchronous notification when the VM enters a certain state, such as halting or encountering an error.
use lightvm::vmevent::VmEvent;
vm.on(VmEvent::Tick, |data| {
println!("Event: {:?}", data.event);
println!("Payload: {:?}", data.payload);
});
vm.run(None);use lightvm::vmevent::VmEvent;
vm.on(VmEvent::Halt, |data| {
println!("Event: {:?}", data.event);
println!("Payload: {:?}", data.payload);
});
vm.halt();
vm.run(None); // will not be executeduse lightvm::vmevent::VmEvent;
vm.on(VmEvent::Start, |data| {
println!("Event: {:?}", data.event);
println!("Payload: {:?}", data.payload);
});
vm.run(None);use lightvm::vmevent::VmEvent;
vm.on(VmEvent::Finish, |data| {
println!("Event: {:?}", data.event);
println!("Payload: {:?}", data.payload);
});
vm.run(None);INFO
Capability Required: no specific capability
Owned Events: Tick, Halt, Panic, Start, and Finish