proc-graph 0.1.0

Convert a process graph into a set of communicating processes
Documentation
  • Coverage
  • 71.43%
    5 out of 7 items documented1 out of 6 items with examples
  • Size
  • Source code size: 18.95 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.5 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 21s Average build duration of successful builds.
  • all releases: 21s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • auxoncorp/proc-graph
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • jonlamb-gh

proc-graph

Overview

A small library which converts a process graph into a set of communicating processes.

Getting Started

# Cargo.toml

[dependencies]
proc-graph = "0.1"

Usage

use std::{thread, time::Duration};

use proc_graph::Network;

fn main() {
    env_logger::init();

    let mut net = Network::new();

    net.add_process("a", vec!["b", "c"], |senders, _| loop {
        thread::sleep(Duration::from_secs(1));
        for (adj, s) in senders.iter() {
            println!("a is sending to {}", adj);
            s.send(("a".to_string(), ()))
                .expect("shouldn't encounter a closed channel");
        }
    });

    net.add_process("b", vec!["d"], |senders, receiver| loop {
        thread::sleep(Duration::from_secs(1));
        let (sender, _) = receiver
            .recv()
            .expect("shouldn't encounter a closed channel");
        println!("b received from {}", sender);
        for s in senders.values() {
            s.send(("b".to_string(), ()))
                .expect("shouldn't encounter a closed channel");
        }
    });

    net.add_process("c", vec!["d"], |senders, receiver| loop {
        thread::sleep(Duration::from_secs(1));
        let (sender, _) = receiver
            .recv()
            .expect("shouldn't encounter a closed channel");
        println!("c received from {}", sender);
        for s in senders.values() {
            s.send(("c".to_string(), ()))
                .expect("shouldn't encounter a closed channel");
        }
    });

    net.add_process("d", vec![], |_, receiver| loop {
        thread::sleep(Duration::from_secs(1));
        let (sender, _) = receiver
            .recv()
            .expect("shouldn't encounter a closed channel");
        println!("d received from {}", sender);
    });

    net.start();
}

License

proc-graph is licensed under the MIT License (MIT) unless otherwise noted. Please see LICENSE for more details.