mirror of
https://github.com/servo/servo.git
synced 2025-07-31 11:10:22 +01:00
Previously, senders and receivers to different kinds of event loops (the main `ScriptThread`, different types of workers) used a rust `trait` mechanism to implement dynamic behavior. This led to having many unused implementations of this `trait`. This change moves to using an `enum` based approach for these senders and receivers and removes all of the dead code. In addition, to allowing for use of rust's dead code detection, it simplifies the code a great deal. All of these generic senders and receivers are moved to the `messaging.rs` file and given proper documentation. Finally, empty an `JSTraceable` implementation is made for all crossbeam `Sender<...>`s to avoid having to manually skip them everytime they are included in structs. The pre-existing empty `MallocSizeOf` implementation is used more thoroughly. Other unecessary wrappers around these senders and receivers are removed as well. Signed-off-by: Martin Robinson <mrobinson@igalia.com>
31 lines
982 B
Rust
31 lines
982 B
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
|
|
use script_traits::StructuredSerializedData;
|
|
use servo_url::ImmutableOrigin;
|
|
|
|
use crate::dom::bindings::refcounted::Trusted;
|
|
use crate::dom::bindings::reflector::DomObject;
|
|
use crate::messaging::CommonScriptMsg;
|
|
|
|
/// Messages used to control the worker event loops
|
|
pub enum WorkerScriptMsg {
|
|
/// Common variants associated with the script messages
|
|
Common(CommonScriptMsg),
|
|
/// Message sent through Worker.postMessage
|
|
DOMMessage {
|
|
origin: ImmutableOrigin,
|
|
data: StructuredSerializedData,
|
|
},
|
|
}
|
|
|
|
pub struct SimpleWorkerErrorHandler<T: DomObject> {
|
|
pub addr: Trusted<T>,
|
|
}
|
|
|
|
impl<T: DomObject> SimpleWorkerErrorHandler<T> {
|
|
pub fn new(addr: Trusted<T>) -> SimpleWorkerErrorHandler<T> {
|
|
SimpleWorkerErrorHandler { addr }
|
|
}
|
|
}
|