CLI argument to start the server at startup
This commit is contained in:
		
							parent
							
								
									b94ae4d586
								
							
						
					
					
						commit
						2c5084d317
					
				
							
								
								
									
										17
									
								
								src/app.rs
								
								
								
								
							
							
						
						
									
										17
									
								
								src/app.rs
								
								
								
								
							| 
						 | 
					@ -41,10 +41,15 @@ pub struct Application {
 | 
				
			||||||
    persistence: Persistence,
 | 
					    persistence: Persistence,
 | 
				
			||||||
    viewports: HashMap<ViewportId, Viewport>,
 | 
					    viewports: HashMap<ViewportId, Viewport>,
 | 
				
			||||||
    focused: Option<ViewportId>,
 | 
					    focused: Option<ViewportId>,
 | 
				
			||||||
 | 
					    init_debug_port: Option<u16>,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl Application {
 | 
					impl Application {
 | 
				
			||||||
    pub fn new(client: EmulatorClient, proxy: EventLoopProxy<UserEvent>) -> Self {
 | 
					    pub fn new(
 | 
				
			||||||
 | 
					        client: EmulatorClient,
 | 
				
			||||||
 | 
					        proxy: EventLoopProxy<UserEvent>,
 | 
				
			||||||
 | 
					        debug_port: Option<u16>,
 | 
				
			||||||
 | 
					    ) -> Self {
 | 
				
			||||||
        let icon = load_icon().ok().map(Arc::new);
 | 
					        let icon = load_icon().ok().map(Arc::new);
 | 
				
			||||||
        let persistence = Persistence::new();
 | 
					        let persistence = Persistence::new();
 | 
				
			||||||
        let mappings = MappingProvider::new(persistence.clone());
 | 
					        let mappings = MappingProvider::new(persistence.clone());
 | 
				
			||||||
| 
						 | 
					@ -63,6 +68,7 @@ impl Application {
 | 
				
			||||||
            persistence,
 | 
					            persistence,
 | 
				
			||||||
            viewports: HashMap::new(),
 | 
					            viewports: HashMap::new(),
 | 
				
			||||||
            focused: None,
 | 
					            focused: None,
 | 
				
			||||||
 | 
					            init_debug_port: debug_port,
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -86,9 +92,12 @@ impl ApplicationHandler<UserEvent> for Application {
 | 
				
			||||||
            self.persistence.clone(),
 | 
					            self.persistence.clone(),
 | 
				
			||||||
            SimId::Player1,
 | 
					            SimId::Player1,
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        let wrapper = Viewport::new(event_loop, self.icon.clone(), Box::new(app));
 | 
					        self.open(event_loop, Box::new(app));
 | 
				
			||||||
        self.focused = Some(wrapper.id());
 | 
					        if let Some(port) = self.init_debug_port {
 | 
				
			||||||
        self.viewports.insert(wrapper.id(), wrapper);
 | 
					            let mut server = GdbServerWindow::new(SimId::Player1, self.client.clone());
 | 
				
			||||||
 | 
					            server.start(port);
 | 
				
			||||||
 | 
					            self.open(event_loop, Box::new(server));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fn window_event(
 | 
					    fn window_event(
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,7 +22,11 @@ mod window;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Parser)]
 | 
					#[derive(Parser)]
 | 
				
			||||||
struct Args {
 | 
					struct Args {
 | 
				
			||||||
 | 
					    /// The path to a virtual boy ROM to run.
 | 
				
			||||||
    rom: Option<PathBuf>,
 | 
					    rom: Option<PathBuf>,
 | 
				
			||||||
 | 
					    /// Start a GDB/LLDB debug server on this port.
 | 
				
			||||||
 | 
					    #[arg(short, long)]
 | 
				
			||||||
 | 
					    debug_port: Option<u16>,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn set_panic_handler() {
 | 
					fn set_panic_handler() {
 | 
				
			||||||
| 
						 | 
					@ -101,6 +105,6 @@ fn main() -> Result<()> {
 | 
				
			||||||
    let event_loop = EventLoop::with_user_event().build().unwrap();
 | 
					    let event_loop = EventLoop::with_user_event().build().unwrap();
 | 
				
			||||||
    event_loop.set_control_flow(ControlFlow::Poll);
 | 
					    event_loop.set_control_flow(ControlFlow::Poll);
 | 
				
			||||||
    let proxy = event_loop.create_proxy();
 | 
					    let proxy = event_loop.create_proxy();
 | 
				
			||||||
    event_loop.run_app(&mut Application::new(client, proxy))?;
 | 
					    event_loop.run_app(&mut Application::new(client, proxy, args.debug_port))?;
 | 
				
			||||||
    Ok(())
 | 
					    Ok(())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,6 +21,12 @@ impl GdbServerWindow {
 | 
				
			||||||
            server: GdbServer::new(sim_id, client),
 | 
					            server: GdbServer::new(sim_id, client),
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pub fn start(&mut self, port: u16) {
 | 
				
			||||||
 | 
					        self.server.stop();
 | 
				
			||||||
 | 
					        self.port_str = port.to_string();
 | 
				
			||||||
 | 
					        self.server.start(port);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl AppWindow for GdbServerWindow {
 | 
					impl AppWindow for GdbServerWindow {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue