diff options
author | Daniel Verkamp <dverkamp@chromium.org> | 2020-03-25 14:38:17 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-04-23 07:17:57 +0000 |
commit | e538d5216fe1ec0f9755e1550cd7e67304653982 (patch) | |
tree | 0e6358db3f0b5db574ca89bc9530271b90f2ac85 /arch | |
parent | fbd6122f0b722f40bb14f0c3a26342fa46d5a89d (diff) | |
download | crosvm-e538d5216fe1ec0f9755e1550cd7e67304653982.tar crosvm-e538d5216fe1ec0f9755e1550cd7e67304653982.tar.gz crosvm-e538d5216fe1ec0f9755e1550cd7e67304653982.tar.bz2 crosvm-e538d5216fe1ec0f9755e1550cd7e67304653982.tar.lz crosvm-e538d5216fe1ec0f9755e1550cd7e67304653982.tar.xz crosvm-e538d5216fe1ec0f9755e1550cd7e67304653982.tar.zst crosvm-e538d5216fe1ec0f9755e1550cd7e67304653982.zip |
arch: serial: simplify device creation
Factor out the call to Serial::new so it isn't repeated for each output type. BUG=chromium:1059924 TEST=cargo build Change-Id: Ie0ad65b4315173a3f2a7c2bf04f041ad3b2157f1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2127320 Reviewed-by: Dylan Reid <dgreid@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/src/serial.rs | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/arch/src/serial.rs b/arch/src/serial.rs index 58947b5..c0e27dc 100644 --- a/arch/src/serial.rs +++ b/arch/src/serial.rs @@ -122,33 +122,30 @@ impl SerialParameters { } else { None }; - match self.type_ { + let output: Option<Box<dyn io::Write + Send>> = match self.type_ { SerialType::Stdout => { keep_fds.push(stdout().as_raw_fd()); - Ok(Serial::new(evt_fd, input, Some(Box::new(stdout())))) + Some(Box::new(stdout())) } - SerialType::Sink => Ok(Serial::new(evt_fd, input, None)), + SerialType::Sink => None, SerialType::Syslog => { syslog::push_fds(keep_fds); - Ok(Serial::new( - evt_fd, - input, - Some(Box::new(syslog::Syslogger::new( - syslog::Priority::Info, - syslog::Facility::Daemon, - ))), - )) + Some(Box::new(syslog::Syslogger::new( + syslog::Priority::Info, + syslog::Facility::Daemon, + ))) } SerialType::File => match &self.path { Some(path) => { let file = File::create(path.as_path()).map_err(Error::FileError)?; keep_fds.push(file.as_raw_fd()); - Ok(Serial::new(evt_fd, input, Some(Box::new(file)))) + Some(Box::new(file)) } - _ => Err(Error::PathRequired), + None => return Err(Error::PathRequired), }, - SerialType::UnixSocket => Err(Error::Unimplemented(SerialType::UnixSocket)), - } + SerialType::UnixSocket => return Err(Error::Unimplemented(SerialType::UnixSocket)), + }; + Ok(Serial::new(evt_fd, input, output)) } } |