forked from mirrors/gecko-dev
		
	 07258edab3
			
		
	
	
		07258edab3
		
	
	
	
	
		
			
			<!-- Please describe your changes on the following line: --> This PR removes the `util` crate. * Replaced the `spawn_named` and `clamp` functions by appropriate uses of `std:🧵:Builder::spawn`, `std::cmp::min` and `std::cmp::max`. * Moved `opts`, `prefs` and `resource_files` into a new `config` crate. * Moved `remutex` and `geometry` into their own crates. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes do not require tests because they are refactorings <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> Source-Repo: https://github.com/servo/servo Source-Revision: 4eb653817f87e5fb47de34356f558eb76ecbca9f --HG-- rename : servo/components/util/Cargo.toml => servo/components/config/Cargo.toml rename : servo/components/util/basedir.rs => servo/components/config/basedir.rs rename : servo/components/util/lib.rs => servo/components/config/lib.rs rename : servo/components/util/opts.rs => servo/components/config/opts.rs rename : servo/components/util/prefs.rs => servo/components/config/prefs.rs rename : servo/components/util/resource_files.rs => servo/components/config/resource_files.rs rename : servo/components/util/geometry.rs => servo/components/geometry/lib.rs rename : servo/components/util/remutex.rs => servo/components/remutex/lib.rs rename : servo/tests/unit/util/lib.rs => servo/tests/unit/servo_config/lib.rs rename : servo/tests/unit/util/opts.rs => servo/tests/unit/servo_config/opts.rs rename : servo/tests/unit/util/prefs.rs => servo/tests/unit/servo_config/prefs.rs rename : servo/tests/unit/util/remutex.rs => servo/tests/unit/servo_remutex/lib.rs
		
			
				
	
	
		
			84 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			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 http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| #[macro_use]
 | |
| extern crate log;
 | |
| #[cfg(not(target_os = "android"))]
 | |
| extern crate ws;
 | |
| 
 | |
| use std::sync::mpsc;
 | |
| use std::sync::mpsc::channel;
 | |
| use std::thread;
 | |
| #[cfg(not(target_os = "android"))]
 | |
| use ws::{Builder, CloseCode, Handler, Handshake};
 | |
| 
 | |
| enum Message {
 | |
|     ShutdownServer,
 | |
| }
 | |
| 
 | |
| pub struct Sender(mpsc::Sender<Message>);
 | |
| 
 | |
| #[cfg(not(target_os = "android"))]
 | |
| struct Connection {
 | |
|     sender: ws::Sender
 | |
| }
 | |
| 
 | |
| #[cfg(not(target_os = "android"))]
 | |
| impl Handler for Connection {
 | |
|     fn on_open(&mut self, _: Handshake) -> ws::Result<()> {
 | |
|         debug!("Connection opened.");
 | |
|         Ok(())
 | |
|     }
 | |
| 
 | |
|     fn on_close(&mut self, _: CloseCode, _: &str) {
 | |
|         debug!("Connection closed.");
 | |
|     }
 | |
| 
 | |
|     fn on_message(&mut self, message: ws::Message) -> ws::Result<()> {
 | |
|         self.sender.send(message)
 | |
|     }
 | |
| }
 | |
| 
 | |
| #[cfg(not(target_os = "android"))]
 | |
| pub fn start_server(port: u16) -> Sender {
 | |
|     debug!("Starting server.");
 | |
|     let (sender, receiver) = channel();
 | |
|     thread::Builder::new().name("debugger".to_owned()).spawn(move || {
 | |
|         let socket = Builder::new().build(|sender: ws::Sender| {
 | |
|             Connection { sender: sender }
 | |
|         }).unwrap();
 | |
|         let sender = socket.broadcaster();
 | |
|         thread::Builder::new().name("debugger-websocket".to_owned()).spawn(move || {
 | |
|             socket.listen(("127.0.0.1", port)).unwrap();
 | |
|         }).expect("Thread spawning failed");
 | |
|         while let Ok(message) = receiver.recv() {
 | |
|             match message {
 | |
|                 Message::ShutdownServer => {
 | |
|                     break;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         sender.shutdown().unwrap();
 | |
|     }).expect("Thread spawning failed");
 | |
|     Sender(sender)
 | |
| }
 | |
| 
 | |
| #[cfg(target_os = "android")]
 | |
| pub fn start_server(_: u16) -> Sender {
 | |
|     panic!("Debugger is not supported on Android");
 | |
| }
 | |
| 
 | |
| #[cfg(not(target_os = "android"))]
 | |
| pub fn shutdown_server(sender: &Sender) {
 | |
|     debug!("Shutting down server.");
 | |
|     let &Sender(ref sender) = sender;
 | |
|     if let Err(_) = sender.send(Message::ShutdownServer) {
 | |
|         warn!("Failed to shut down server.");
 | |
|     }
 | |
| }
 | |
| 
 | |
| #[cfg(target_os = "android")]
 | |
| pub fn shutdown_server(_: &Sender) {
 | |
|     panic!("Debugger is not supported on Android");
 | |
| }
 |