pub struct KernelRuntime<S> { /* private fields */ }Implementations§
Source§impl<S> KernelRuntime<S>where
S: MemoryStore,
impl<S> KernelRuntime<S>where
S: MemoryStore,
Sourcepub fn load(store: S) -> Result<Self, RuntimeError>
pub fn load(store: S) -> Result<Self, RuntimeError>
Examples found in repository?
examples/runtime_persistence.rs (line 21)
19fn run() -> Result<(), Box<dyn std::error::Error>> {
20 let path = temp_state_path("runtime");
21 let mut runtime = KernelRuntime::load(JsonFileStore::new(&path))?;
22
23 let receipt = runtime.write_with_receipt("apps.demo.home.count", 3_u64)?;
24 let json = runtime_receipt_to_json(&receipt);
25
26 assert_eq!(json["events"][0]["path"][0], "apps");
27 assert_eq!(json["events"][0]["path"][2], "home");
28 assert_eq!(json["events"][0]["value"], 3.0);
29
30 let restored = KernelRuntime::load(JsonFileStore::new(&path))?;
31 assert_eq!(
32 restored.read("apps.demo.home.count"),
33 Some(&Value::from(3_u64))
34 );
35 assert!(restored.events().is_empty());
36
37 println!("{json}");
38 let _ = fs::remove_file(path);
39 Ok(())
40}pub fn new(kernel: Kernel, store: S) -> Self
pub fn kernel(&self) -> &Kernel
pub fn kernel_mut(&mut self) -> &mut Kernel
pub fn store(&self) -> &S
pub fn save(&self) -> Result<(), RuntimeError>
Sourcepub fn read(&self, path: impl IntoPath) -> Option<&Value>
pub fn read(&self, path: impl IntoPath) -> Option<&Value>
Examples found in repository?
examples/runtime_persistence.rs (line 32)
19fn run() -> Result<(), Box<dyn std::error::Error>> {
20 let path = temp_state_path("runtime");
21 let mut runtime = KernelRuntime::load(JsonFileStore::new(&path))?;
22
23 let receipt = runtime.write_with_receipt("apps.demo.home.count", 3_u64)?;
24 let json = runtime_receipt_to_json(&receipt);
25
26 assert_eq!(json["events"][0]["path"][0], "apps");
27 assert_eq!(json["events"][0]["path"][2], "home");
28 assert_eq!(json["events"][0]["value"], 3.0);
29
30 let restored = KernelRuntime::load(JsonFileStore::new(&path))?;
31 assert_eq!(
32 restored.read("apps.demo.home.count"),
33 Some(&Value::from(3_u64))
34 );
35 assert!(restored.events().is_empty());
36
37 println!("{json}");
38 let _ = fs::remove_file(path);
39 Ok(())
40}pub fn read_fresh(&mut self, path: impl IntoPath) -> Option<Value>
pub fn write( &mut self, path: impl IntoPath, value: impl Into<Value>, ) -> Result<Memory, RuntimeError>
Sourcepub fn write_with_receipt(
&mut self,
path: impl IntoPath,
value: impl Into<Value>,
) -> Result<RuntimeReceipt<Memory>, RuntimeError>
pub fn write_with_receipt( &mut self, path: impl IntoPath, value: impl Into<Value>, ) -> Result<RuntimeReceipt<Memory>, RuntimeError>
Examples found in repository?
examples/runtime_persistence.rs (line 23)
19fn run() -> Result<(), Box<dyn std::error::Error>> {
20 let path = temp_state_path("runtime");
21 let mut runtime = KernelRuntime::load(JsonFileStore::new(&path))?;
22
23 let receipt = runtime.write_with_receipt("apps.demo.home.count", 3_u64)?;
24 let json = runtime_receipt_to_json(&receipt);
25
26 assert_eq!(json["events"][0]["path"][0], "apps");
27 assert_eq!(json["events"][0]["path"][2], "home");
28 assert_eq!(json["events"][0]["value"], 3.0);
29
30 let restored = KernelRuntime::load(JsonFileStore::new(&path))?;
31 assert_eq!(
32 restored.read("apps.demo.home.count"),
33 Some(&Value::from(3_u64))
34 );
35 assert!(restored.events().is_empty());
36
37 println!("{json}");
38 let _ = fs::remove_file(path);
39 Ok(())
40}pub fn execute( &mut self, target: impl AsRef<str>, body: Option<ExecuteValue>, ) -> Result<ExecuteValue, RuntimeError>
pub fn execute_with_receipt( &mut self, target: impl AsRef<str>, body: Option<ExecuteValue>, ) -> Result<RuntimeReceipt<ExecuteValue>, RuntimeError>
Sourcepub fn events(&self) -> &[KernelEvent]
pub fn events(&self) -> &[KernelEvent]
Examples found in repository?
examples/runtime_persistence.rs (line 35)
19fn run() -> Result<(), Box<dyn std::error::Error>> {
20 let path = temp_state_path("runtime");
21 let mut runtime = KernelRuntime::load(JsonFileStore::new(&path))?;
22
23 let receipt = runtime.write_with_receipt("apps.demo.home.count", 3_u64)?;
24 let json = runtime_receipt_to_json(&receipt);
25
26 assert_eq!(json["events"][0]["path"][0], "apps");
27 assert_eq!(json["events"][0]["path"][2], "home");
28 assert_eq!(json["events"][0]["value"], 3.0);
29
30 let restored = KernelRuntime::load(JsonFileStore::new(&path))?;
31 assert_eq!(
32 restored.read("apps.demo.home.count"),
33 Some(&Value::from(3_u64))
34 );
35 assert!(restored.events().is_empty());
36
37 println!("{json}");
38 let _ = fs::remove_file(path);
39 Ok(())
40}pub fn events_matching( &self, path: impl IntoPath, ) -> Result<Vec<KernelEvent>, RuntimeError>
pub fn drain_events(&mut self) -> Vec<KernelEvent>
pub fn drain_events_matching( &mut self, path: impl IntoPath, ) -> Result<Vec<KernelEvent>, RuntimeError>
Trait Implementations§
Auto Trait Implementations§
impl<S> Freeze for KernelRuntime<S>where
S: Freeze,
impl<S> RefUnwindSafe for KernelRuntime<S>where
S: RefUnwindSafe,
impl<S> Send for KernelRuntime<S>where
S: Send,
impl<S> Sync for KernelRuntime<S>where
S: Sync,
impl<S> Unpin for KernelRuntime<S>where
S: Unpin,
impl<S> UnsafeUnpin for KernelRuntime<S>where
S: UnsafeUnpin,
impl<S> UnwindSafe for KernelRuntime<S>where
S: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more