libnode_rs 0.0.2

Library embedding Nodejs (libnode) within Rust
Documentation
use std::sync::atomic::AtomicBool;
use std::sync::atomic::Ordering;

static RUNNING: AtomicBool = AtomicBool::new(false);

pub fn is_running() -> bool {
  RUNNING.load(Ordering::Acquire)
}

pub(crate) fn mark_running() -> crate::Result<()> {
  match RUNNING.compare_exchange(false, true, Ordering::Acquire, Ordering::Acquire) {
    Ok(_) => Ok(()),
    Err(_) => Err(crate::Error::NodejsAlreadyRunning),
  }
}

pub(crate) fn mark_stopped() -> crate::Result<()> {
  match RUNNING.compare_exchange(true, false, Ordering::Acquire, Ordering::Acquire) {
    Ok(_) => Ok(()),
    Err(_) => Err(crate::Error::NodejsNotRunning),
  }
}