You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.9 KiB

#[cfg(all(unix, not(feature = "async-mio")))]
use ssip_client::{
fifo, ClientName, ClientResult, SynthesisVoice, OK_OUTPUT_MODULES_LIST_SENT,
OK_VOICES_LIST_SENT,
};
#[cfg(all(unix, not(feature = "async-mio")))]
fn main() -> ClientResult<()> {
fn voice_to_string(voice: &SynthesisVoice) -> String {
match &voice.language {
Some(language) => match &voice.dialect {
Some(dialect) => format!("{} [{}_{}]", voice.name, language, dialect),
None => format!("{} [{}]", voice.name, language),
},
None => format!("{}", voice.name),
}
}
fn print_list(title: &str, values: &[String]) {
println!("{}:", title);
for val in values {
println!("- {}", val);
}
}
let mut client = fifo::Builder::new().build()?;
client
.set_client_name(ClientName::new("joe", "list"))?
.check_client_name_set()?;
const OUTPUT_MODULE_TITLE: &str = "output modules";
let modules = client
.list_output_modules()?
.receive_lines(OK_OUTPUT_MODULES_LIST_SENT)?;
print_list(OUTPUT_MODULE_TITLE, &modules);
const VOICE_TYPES_TITLE: &str = "voice types";
let vtypes = client
.list_voice_types()?
.receive_lines(OK_VOICES_LIST_SENT)?;
print_list(VOICE_TYPES_TITLE, &vtypes);
const SYNTHESIS_VOICES_TITLE: &str = "synthesis voices";
let voices = client.list_synthesis_voices()?.receive_synthesis_voices()?;
print_list(
SYNTHESIS_VOICES_TITLE,
&voices
.iter()
.map(|ref v| voice_to_string(v))
.collect::<Vec<String>>(),
);
client.quit().unwrap();
Ok(())
}
#[cfg(all(unix, feature = "async-mio"))]
fn main() {
println!("asynchronous client not implemented");
}
#[cfg(not(unix))]
fn main() {
println!("example only available on unix.");
}