futuresdr 0.0.27

An Experimental Async SDR Runtime for Heterogeneous Architectures.
Documentation
use std::time;

use futuresdr::anyhow::Result;
use futuresdr::blocks::MessageCopy;
use futuresdr::blocks::MessageSink;
use futuresdr::blocks::MessageSourceBuilder;
use futuresdr::runtime::Flowgraph;
use futuresdr::runtime::Pmt;
use futuresdr::runtime::Runtime;

fn main() -> Result<()> {
    let mut fg = Flowgraph::new();

    let msg_source = MessageSourceBuilder::new(
        Pmt::String("foo".to_string()),
        time::Duration::from_millis(100),
    )
    .n_messages(20)
    .build();
    let msg_copy = MessageCopy::new();
    let msg_sink = MessageSink::new();

    let msg_copy = fg.add_block(msg_copy);
    let msg_source = fg.add_block(msg_source);
    let msg_sink = fg.add_block(msg_sink);

    fg.connect_message(msg_source, "out", msg_copy, "in")?;
    fg.connect_message(msg_copy, "out", msg_sink, "in")?;

    let now = time::Instant::now();
    Runtime::new().run(fg)?;
    let elapsed = now.elapsed();
    println!("flowgraph took {:?}", elapsed);

    Ok(())
}