mirror of
https://github.com/servo/servo.git
synced 2025-07-22 14:53:49 +01:00
Replace mpsc with crossbeam/servo channel, update ipc-channel
Co-authored-by: Gregory Terzian <gterzian@users.noreply.github.com>
This commit is contained in:
parent
b977b4994c
commit
2a996fbc8f
89 changed files with 341 additions and 377 deletions
|
@ -13,13 +13,12 @@ use dom::bindings::structuredclone::StructuredCloneData;
|
|||
use dom::serviceworkerglobalscope::{ServiceWorkerGlobalScope, ServiceWorkerScriptMsg};
|
||||
use dom::serviceworkerregistration::longest_prefix_match;
|
||||
use ipc_channel::ipc::{self, IpcSender};
|
||||
use ipc_channel::router::ROUTER;
|
||||
use net_traits::{CustomResponseMediator, CoreResourceMsg};
|
||||
use script_traits::{ServiceWorkerMsg, ScopeThings, SWManagerMsg, SWManagerSenders, DOMMessage};
|
||||
use servo_channel::{channel, route_ipc_receiver_to_new_servo_receiver, Sender, Receiver};
|
||||
use servo_config::prefs::PREFS;
|
||||
use servo_url::ServoUrl;
|
||||
use std::collections::HashMap;
|
||||
use std::sync::mpsc::{channel, Sender, Receiver, RecvError};
|
||||
use std::thread;
|
||||
|
||||
enum Message {
|
||||
|
@ -56,8 +55,8 @@ impl ServiceWorkerManager {
|
|||
pub fn spawn_manager(sw_senders: SWManagerSenders) {
|
||||
let (own_sender, from_constellation_receiver) = ipc::channel().unwrap();
|
||||
let (resource_chan, resource_port) = ipc::channel().unwrap();
|
||||
let from_constellation = ROUTER.route_ipc_receiver_to_new_mpsc_receiver(from_constellation_receiver);
|
||||
let resource_port = ROUTER.route_ipc_receiver_to_new_mpsc_receiver(resource_port);
|
||||
let from_constellation = route_ipc_receiver_to_new_servo_receiver(from_constellation_receiver);
|
||||
let resource_port = route_ipc_receiver_to_new_servo_receiver(resource_port);
|
||||
let _ = sw_senders.resource_sender.send(CoreResourceMsg::NetworkMediator(resource_chan));
|
||||
let _ = sw_senders.swmanager_sender.send(SWManagerMsg::OwnSender(own_sender.clone()));
|
||||
thread::Builder::new().name("ServiceWorkerManager".to_owned()).spawn(move || {
|
||||
|
@ -108,7 +107,7 @@ impl ServiceWorkerManager {
|
|||
}
|
||||
|
||||
fn handle_message(&mut self) {
|
||||
while let Ok(message) = self.receive_message() {
|
||||
while let Some(message) = self.receive_message() {
|
||||
let should_continue = match message {
|
||||
Message::FromConstellation(msg) => {
|
||||
self.handle_message_from_constellation(msg)
|
||||
|
@ -184,13 +183,10 @@ impl ServiceWorkerManager {
|
|||
true
|
||||
}
|
||||
|
||||
#[allow(unsafe_code)]
|
||||
fn receive_message(&mut self) -> Result<Message, RecvError> {
|
||||
let msg_from_constellation = &self.own_port;
|
||||
let msg_from_resource = &self.resource_receiver;
|
||||
fn receive_message(&mut self) -> Option<Message> {
|
||||
select! {
|
||||
msg = msg_from_constellation.recv() => msg.map(Message::FromConstellation),
|
||||
msg = msg_from_resource.recv() => msg.map(Message::FromResource)
|
||||
recv(self.own_port.select(), msg) => msg.map(Message::FromConstellation),
|
||||
recv(self.resource_receiver.select(), msg) => msg.map(Message::FromResource),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue