simple_client/
simple_client.rs1extern crate sqa_jack;
2
3use sqa_jack::{JackPort, JackConnection, JackHandler, JackControl, JackCallbackContext, JackResult, PORT_IS_INPUT, PORT_IS_OUTPUT, PORT_IS_PHYSICAL};
4use std::thread;
5struct Ports {
6 inp: JackPort,
7 out: JackPort
8}
9impl JackHandler for Ports {
10 fn process(&mut self, ctx: &JackCallbackContext) -> JackControl {
11 let inp = ctx.get_port_buffer(&self.inp).unwrap();
12 let out = ctx.get_port_buffer(&self.out).unwrap();
13 for (out, inp) in out.iter_mut().zip(inp.iter()) {
14 *out = *inp;
15 }
16 JackControl::Continue
17 }
18}
19fn run() -> JackResult<()> {
20 let mut conn = JackConnection::connect("simple_client", None)?;
21 let inp = conn.register_port("input", PORT_IS_INPUT)?;
22 let out = conn.register_port("output", PORT_IS_OUTPUT)?;
23 let ports = Ports {
24 inp: inp,
25 out: out
26 };
27 conn.set_handler(ports)?;
28 let mut conn = match conn.activate() {
29 Ok(nc) => nc,
30 Err((_, err)) => return Err(err)
31 };
32 let ports = conn.get_ports(None, None, Some(PORT_IS_INPUT | PORT_IS_PHYSICAL))?;
33 if ports.len() >= 1 {
34 conn.connect_ports(&out, &ports[0])?;
35 println!("Connected output port to {}", ports[0].get_name(false)?);
36 }
37 let ports = conn.get_ports(None, None, Some(PORT_IS_OUTPUT | PORT_IS_PHYSICAL))?;
38 if ports.len() >= 1 {
39 conn.connect_ports(&ports[0], &inp)?;
40 println!("Connected input port to {}", ports[0].get_name(false)?);
41 }
42 thread::sleep(::std::time::Duration::new(60 * 60, 0));
43 Ok(())
44}
45fn main() {
46 println!("{:?}", run());
47}