mirror of
https://github.com/servo/servo.git
synced 2025-08-04 21:20:23 +01:00
Use task! to post worker messages
This commit is contained in:
parent
56a546afcd
commit
76745699d2
2 changed files with 5 additions and 26 deletions
|
@ -17,7 +17,7 @@ use dom::bindings::str::DOMString;
|
|||
use dom::bindings::structuredclone::StructuredCloneData;
|
||||
use dom::globalscope::GlobalScope;
|
||||
use dom::messageevent::MessageEvent;
|
||||
use dom::worker::{TrustedWorkerAddress, WorkerErrorHandler, WorkerMessageHandler};
|
||||
use dom::worker::{TrustedWorkerAddress, Worker, WorkerErrorHandler};
|
||||
use dom::workerglobalscope::WorkerGlobalScope;
|
||||
use dom_struct::dom_struct;
|
||||
use ipc_channel::ipc::{self, IpcReceiver, IpcSender};
|
||||
|
@ -375,10 +375,10 @@ impl DedicatedWorkerGlobalScopeMethods for DedicatedWorkerGlobalScope {
|
|||
unsafe fn PostMessage(&self, cx: *mut JSContext, message: HandleValue) -> ErrorResult {
|
||||
let data = StructuredCloneData::write(cx, message)?;
|
||||
let worker = self.worker.borrow().as_ref().unwrap().clone();
|
||||
self.parent_sender
|
||||
.send(CommonScriptMsg::Task(WorkerEvent,
|
||||
box WorkerMessageHandler::new(worker, data)))
|
||||
.unwrap();
|
||||
let task = box task!(post_worker_message: move || {
|
||||
Worker::handle_message(worker, data);
|
||||
});
|
||||
self.parent_sender.send(CommonScriptMsg::Task(WorkerEvent, task)).unwrap();
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
@ -198,27 +198,6 @@ impl WorkerMethods for Worker {
|
|||
event_handler!(error, GetOnerror, SetOnerror);
|
||||
}
|
||||
|
||||
pub struct WorkerMessageHandler {
|
||||
addr: TrustedWorkerAddress,
|
||||
data: StructuredCloneData,
|
||||
}
|
||||
|
||||
impl WorkerMessageHandler {
|
||||
pub fn new(addr: TrustedWorkerAddress, data: StructuredCloneData) -> WorkerMessageHandler {
|
||||
WorkerMessageHandler {
|
||||
addr: addr,
|
||||
data: data,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Task for WorkerMessageHandler {
|
||||
fn run(self: Box<Self>) {
|
||||
let this = *self;
|
||||
Worker::handle_message(this.addr, this.data);
|
||||
}
|
||||
}
|
||||
|
||||
impl Task for SimpleWorkerErrorHandler<Worker> {
|
||||
#[allow(unrooted_must_root)]
|
||||
fn run(self: Box<Self>) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue