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.

55 lines
1.5 KiB

#[cfg(all(unix, not(feature = "async-mio")))]
use ssip_client::{
fifo, ClientName, ClientResult, EventType, NotificationType, OK_NOTIFICATION_SET,
};
#[cfg(all(unix, not(feature = "async-mio")))]
fn main() -> ClientResult<()> {
let mut client = fifo::Builder::new().build()?;
client
.set_client_name(ClientName::new("joe", "notifications"))?
.check_client_name_set()?;
// Enabling notifications
client
.set_notification(NotificationType::All, true)?
.check_status(OK_NOTIFICATION_SET)?;
// Sending message
let msg_id = client
.speak()?
.check_receiving_data()?
.send_line("hello")?
.receive_message_id()?;
println!("message identifier: {}", msg_id);
loop {
// Waiting for event
match client.receive_event() {
Ok(event) => {
println!(
"event {}: message {} client {}",
event.ntype, event.id.message, event.id.client
);
if matches!(event.ntype, EventType::End) {
break;
}
}
Err(err) => {
eprintln!("error: {:?}", err);
break;
}
}
}
println!("exiting...");
client.quit()?;
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.");
}