1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//! Unix-specific extensions.

use crate::ProcessResult;

mod signal;

pub use self::signal::Signal;

/// Unix-specific extension to [Process].
///
/// [Process]: ../../struct.Process.html
#[async_trait::async_trait]
pub trait ProcessExt {
    /// Send the signal to process.
    async fn signal(&self, signal: Signal) -> ProcessResult<()>;

    /// Get process niceness.
    async fn niceness(&self) -> ProcessResult<libc::c_int>;

    /// Set process niceness.
    async fn set_niceness(&self, value: libc::c_int) -> ProcessResult<()>;
}

#[cfg(unix)]
#[async_trait::async_trait]
impl ProcessExt for crate::Process {
    async fn signal(&self, signal: Signal) -> ProcessResult<()> {
        self.as_ref().signal(signal).await
    }

    async fn niceness(&self) -> ProcessResult<libc::c_int> {
        self.as_ref().niceness().await
    }

    async fn set_niceness(&self, value: libc::c_int) -> ProcessResult<()> {
        self.as_ref().set_niceness(value).await
    }
}