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.
52 lines
1.5 KiB
52 lines
1.5 KiB
use mio::{Events, Poll, Token};
|
|
|
|
use ssip_client::{ClientName, ClientResult};
|
|
|
|
fn main() -> ClientResult<()> {
|
|
let mut poll = Poll::new()?;
|
|
let mut events = Events::with_capacity(128);
|
|
let mut client = ssip_client::new_default_fifo_client()?;
|
|
let token = Token(0);
|
|
client.register(&poll, token)?;
|
|
|
|
poll.poll(&mut events, None)?;
|
|
let mut is_opened = false;
|
|
while !is_opened {
|
|
for event in &events {
|
|
if event.token() == token && event.is_writable() {
|
|
println!("opening client");
|
|
match client.set_client_name(ClientName::new("joe", "hello")) {
|
|
Ok(()) => {
|
|
is_opened = true;
|
|
break;
|
|
}
|
|
Err(err) if err.kind() == io::ErrorKing::WouldBlock => {}
|
|
Err(err) => panic!("Error opening client: {:?}", err),
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
poll.poll(&mut events, None)?;
|
|
for event in &events {
|
|
if event.token() == token && event.is_writable() {
|
|
println!("sending message");
|
|
let msg_id = client.say_line("hello")?;
|
|
println!("message: {}", msg_id);
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
poll.poll(&mut events, None)?;
|
|
for event in &events {
|
|
if event.token() == token && event.is_writable() {
|
|
println!("quitting");
|
|
client.quit()?;
|
|
break;
|
|
}
|
|
}
|
|
Ok(())
|
|
}
|