mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-24 18:51:13 +08:00
feat: VmHost 加 BroadcastChannel 注册表三方法并 full_reset 清表
This commit is contained in:
@@ -357,4 +357,27 @@ impl oxide_runtime_api::VmHost for Vm {
|
||||
fn atomics_wake_waiters(&mut self, buffer: *mut JsObject, offset: usize, count: f64) -> usize {
|
||||
self.atomics_wake_waiters(buffer, offset, count)
|
||||
}
|
||||
fn bc_register(&self, name: &str, port: *mut JsObject) {
|
||||
self.realm
|
||||
.gc
|
||||
.borrow_mut()
|
||||
.broadcast_channels
|
||||
.entry(name.to_string())
|
||||
.or_default()
|
||||
.push(port);
|
||||
}
|
||||
fn bc_unregister(&self, name: &str, port: *mut JsObject) {
|
||||
if let Some(v) = self.realm.gc.borrow_mut().broadcast_channels.get_mut(name) {
|
||||
v.retain(|p| *p != port);
|
||||
}
|
||||
}
|
||||
fn bc_lookup(&self, name: &str) -> Vec<*mut JsObject> {
|
||||
self.realm
|
||||
.gc
|
||||
.borrow()
|
||||
.broadcast_channels
|
||||
.get(name)
|
||||
.cloned()
|
||||
.unwrap_or_default()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user