jabber: wait to have connected
This commit is contained in:
parent
4e1570b2fd
commit
54efe3f631
|
@ -21,7 +21,7 @@ impl Handle {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn run(jid: String, password: String, muc_jid: String) -> Handle {
|
||||
pub async fn run(jid: String, password: String, muc_jid: String) -> Handle {
|
||||
let muc_jid: FullJid = match FullJid::from_str(&muc_jid) {
|
||||
Ok(jid) => jid,
|
||||
Err(err) => panic!("MUC Jid invalid: {:?}", err),
|
||||
|
@ -32,20 +32,26 @@ pub fn run(jid: String, password: String, muc_jid: String) -> Handle {
|
|||
tx: tx.clone(),
|
||||
};
|
||||
|
||||
let client = AsyncClient::new(&jid, &password).unwrap();
|
||||
let (mut sink, mut stream) = client.split();
|
||||
let mut client = AsyncClient::new(&jid, &password).unwrap();
|
||||
loop {
|
||||
match client.next().await {
|
||||
Some(Event::Online { .. }) => {
|
||||
println!("XMPP client now online at {}", jid);
|
||||
let packet = Packet::Stanza(make_join_presence(muc_jid.clone()));
|
||||
client.send(packet).await
|
||||
.unwrap();
|
||||
break;
|
||||
}
|
||||
Some(_) => {}
|
||||
None => panic!("XMPP cannot connect"),
|
||||
}
|
||||
}
|
||||
|
||||
let (mut sink, mut stream) = client.split();
|
||||
tokio::task::spawn_local(async move {
|
||||
while let Some(event) = stream.next().await {
|
||||
match event {
|
||||
Event::Online { .. } => {
|
||||
println!("XMPP client now online at {}", jid);
|
||||
let packet = Packet::Stanza(make_join_presence(muc_jid.clone()));
|
||||
tx.send(packet).await
|
||||
.unwrap();
|
||||
}
|
||||
Event::Stanza(el) => {
|
||||
println!("<< {:?}", el);
|
||||
if el.is("presence", "jabber:client") {
|
||||
match Presence::try_from(el) {
|
||||
Ok(presence) => {
|
||||
|
@ -61,7 +67,6 @@ pub fn run(jid: String, password: String, muc_jid: String) -> Handle {
|
|||
}
|
||||
}
|
||||
}
|
||||
ev => println!("<< {:?}", ev),
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,14 +27,12 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
|||
let jid = args[1].to_owned();
|
||||
let password = args[2].to_owned();
|
||||
let muc = args[3].to_owned();
|
||||
let jabber = jabber::run(jid, password, muc).await;
|
||||
|
||||
let aircrafts = aircrafts::Aircrafts::load("aircraftDatabase.csv");
|
||||
let locations = location::Locations::load("locations.json");
|
||||
let mut events = adsb::run("https://adsb.hq.c3d2.de/data.json", locations);
|
||||
|
||||
let jabber = jabber::run(jid, password, muc);
|
||||
|
||||
println!("wait for events...");
|
||||
while let Some(event) = events.recv().await {
|
||||
println!("event: {:?}", event);
|
||||
|
||||
|
|
Loading…
Reference in New Issue