Don't split xmpp receiving and sending
[?]
Dec 16, 2018, 8:14 PM
O2GM5J4FSOXLTJURP2K6JMCBRAJ2JPJ723A43CR6AT2VQQQYRHFQCDependencies
- [2]
X6L47BHQUse different structure for established xmpp connection - [3]
FV6BJ5K6Send self-presence and store account info in Rc so it willbe used in some future in parallel - [4]
VS6AHRWIMove XMPP to separate dir - [5]
PBRUH4BJRename optional XmppConnection to MaybeXmppConnection
Change contents
- replacement in src/xmpp/mod.rs at line 12
inner: Option<(stream::SplitSink<Client>, stream::SplitStream<Client>)>,inner: Option<Client>, - replacement in src/xmpp/mod.rs at line 17
inner: (stream::SplitSink<Client>, stream::SplitStream<Client>),inner: Client, - replacement in src/xmpp/mod.rs at line 58
Self::online(client.split(), account)Self::online(client, account) - replacement in src/xmpp/mod.rs at line 71
(sink, stream): (stream::SplitSink<Client>, stream::SplitStream<Client>),client: Client, - replacement in src/xmpp/mod.rs at line 74[3.649]→[3.2180:2498](∅→∅),[2.728]→[3.2180:2498](∅→∅),[3.2180]→[3.2180:2498](∅→∅),[3.2498]→[2.729:805](∅→∅),[2.805]→[3.2574:2615](∅→∅),[3.350]→[3.2574:2615](∅→∅),[3.2574]→[3.2574:2615](∅→∅),[3.2615]→[2.806:861](∅→∅),[2.861]→[3.2676:3237](∅→∅),[3.2676]→[3.2676:3237](∅→∅)
Box::new(future::loop_fn((sink, stream, account),|(sink, stream, account)| {stream.into_future().then(|r| match r {Ok((event, stream)) => match event {Some(Event::Online) => {info!("Online");future::ok(future::Loop::Break(XmppConnection {account,inner: (sink, stream),}))}Some(Event::Stanza(s)) => {info!("xmpp stanza: {:?}", s);future::ok(future::Loop::Continue((sink, stream, account)))}_ => {warn!("Disconnected");future::err(account)}},Err((e, _)) => {error!("xmpp receive error: {}", e);Box::new(future::loop_fn((client, account), |(client, account)| {client.into_future().then(|r| match r {Ok((event, client)) => match event {Some(Event::Online) => {info!("Online");future::ok(future::Loop::Break(XmppConnection {account,inner: client,}))}Some(Event::Stanza(s)) => {info!("xmpp stanza: {:?}", s);future::ok(future::Loop::Continue((client, account)))}_ => {warn!("Disconnected"); - replacement in src/xmpp/mod.rs at line 92
})},))},Err((e, _)) => {error!("xmpp receive error: {}", e);future::err(account)}})})) - replacement in src/xmpp/mod.rs at line 105
let (sink, stream) = inner;let client = inner; - edit in src/xmpp/mod.rs at line 110
let account2 = account.clone(); - replacement in src/xmpp/mod.rs at line 112
sink.send(presence)client.send(presence) - replacement in src/xmpp/mod.rs at line 118
.join(future::loop_fn((account.clone(), stream), |(account, stream)| {stream.and_then(move |client| {future::loop_fn((account2.clone(), client), |(account, client)| {client - replacement in src/xmpp/mod.rs at line 126
.and_then(|(event, stream)| match event {.and_then(|(event, client)| match event { - replacement in src/xmpp/mod.rs at line 135
future::ok(future::Loop::Break(stream))future::ok(future::Loop::Break(client)) - replacement in src/xmpp/mod.rs at line 137
future::ok(future::Loop::Continue((account, stream)))future::ok(future::Loop::Continue((account, client))) - replacement in src/xmpp/mod.rs at line 146
.map_err(|e| format!("waiting self-presence: {}", e)),).map_err(|e| format!("waiting self-presence: {}", e))})