Add counter for id. Check for jid in roster
[?]
Jan 1, 2019, 11:33 AM
EBETRYK7RNRATWD75LTFUTPF6M6KB6YPKTQUX4K232JB6CKVOZOQCDependencies
- [2]
UMTLHH77Process commands in the separate function - [3]
XGP44R5HRework stopping xmpp connection - [4]
UIXIQHDYWait for commands via new processing code - [5]
WJNXI6Z4Fill roster - [6]
QTCUURXNAdd additional requirement for command stream - [7]
UWY5EVZ6Add dummy roster data - [8]
OANBCLN5Move xmpp client into XmppState - [9]
FWJDW3G5Allow process xmpp incoming stanzas with futures - [10]
ALP2YJIURename XmppState to XmppProcessState - [11]
VS6AHRWIMove XMPP to separate dir - [12]
5IKA4GO7Rename xmpp client field from "inner" to "client" - [13]
BWDUANCVSecond part of processing result is only about stop_future - [*]
QWE26TMVupdate deps - [*]
FV6BJ5K6Send self-presence and store account info in Rc so it willbe used in some future in parallel
Change contents
- edit in src/xmpp/mod.rs at line 7[15.48][16.420]
use std::collections::HashMap; - edit in src/xmpp/mod.rs at line 16
roster: HashMap<jid::Jid, ()>,counter: usize, - replacement in src/xmpp/mod.rs at line 94
state: XmppState { client },state: XmppState {client,roster: HashMap::new(),counter: 0,}, - edit in src/xmpp/mod.rs at line 102
.map(|(conn, _)| conn) - edit in src/xmpp/mod.rs at line 103
.and_then(|(conn, r)| match r {Ok(Either::A(_)) => future::ok(conn),Ok(Either::B(_)) => future::err(conn.account),Err(_e) => future::err(conn.account),}) - replacement in src/xmpp/mod.rs at line 137
fn xmpp_processing(&mut self, event: &Event) {fn xmpp_processing(self,event: &Event,) -> impl Future<Item = Self, Error = std::rc::Rc<config::Account>> { - edit in src/xmpp/mod.rs at line 142
future::ok(self) - replacement in src/xmpp/mod.rs at line 147
/// or stop future was resolved/// or stop future was resolved./// Return item if connection was preserved or error otherwise./// Second part is a state of stop_future - replacement in src/xmpp/mod.rs at line 155
Item = (Self, Result<Either<F, T>, failure::Error>),Error = (std::rc::Rc<config::Account>,Result<Either<F, T>, failure::Error>,),Item = (Self, Result<Either<F, T>, E>),Error = (std::rc::Rc<config::Account>, Result<Either<F, T>, E>), - replacement in src/xmpp/mod.rs at line 159
F: Future<Item = T, Error = E>,E: Into<failure::Error>,S: FnMut(&mut Self, Event) -> Result<bool, failure::Error>,F: Future<Item = T, Error = E> + 'static,S: FnMut(&mut Self, Event) -> Result<bool, ()> + 'static,T: 'static,E: 'static, - replacement in src/xmpp/mod.rs at line 167
let XmppConnection { state, account } = xmpp;state.clientlet XmppConnection {state:XmppState {client,roster,counter,},account,} = xmpp;client - replacement in src/xmpp/mod.rs at line 179
.then(|r| match r {.then(move |r| match r { - replacement in src/xmpp/mod.rs at line 182
let mut xmpp = XmppConnection {state: XmppState { client },let xmpp = XmppConnection {state: XmppState {client,roster,counter,}, - replacement in src/xmpp/mod.rs at line 190[2.1595]→[2.1595:1730](∅→∅),[2.1730]→[3.1639:2096](∅→∅),[3.2169]→[3.1639:2096](∅→∅),[3.1639]→[3.1639:2096](∅→∅),[3.2096]→[2.1731:1848](∅→∅)
xmpp.xmpp_processing(&event);match stop_condition(&mut xmpp, event) {Ok(true) => {future::ok(future::Loop::Break((xmpp, Ok(Either::A(b)))))}Ok(false) => future::ok(future::Loop::Continue((xmpp,b,stop_condition,))),Err(e) => future::err((xmpp.account, Err(e))),}Box::new(xmpp.xmpp_processing(&event).then(|r| match r {Ok(mut xmpp) => match stop_condition(&mut xmpp, event) {Ok(true) => future::ok(future::Loop::Break((xmpp,Ok(Either::A(b)),))),Ok(false) => future::ok(future::Loop::Continue((xmpp,b,stop_condition,))),Err(_e) => future::err((xmpp.account, Ok(Either::A(b)))),},Err(account) => future::err((account, Ok(Either::A(b)))),}))as Box<dyn Future<Item = _, Error = _>> - replacement in src/xmpp/mod.rs at line 207
future::err((account, Ok(Either::A(b))))Box::new(future::err((account, Ok(Either::A(b))))) - replacement in src/xmpp/mod.rs at line 210
Ok(Either::B((t, a))) => {if let Some(client) = a.into_inner() {future::ok(future::Loop::Break((XmppConnection {state: XmppState { client },account,Ok(Either::B((t, a))) => Box::new(if let Some(client) = a.into_inner() {future::ok(future::Loop::Break((XmppConnection {state: XmppState {client,roster,counter, - replacement in src/xmpp/mod.rs at line 218
Ok(Either::B(t)),)))} else {future::err((account, Ok(Either::B(t))))}}account,},Ok(Either::B(t)),)))} else {future::err((account, Ok(Either::B(t))))}), - replacement in src/xmpp/mod.rs at line 227
future::err((account, Ok(Either::A(b))))Box::new(future::err((account, Ok(Either::A(b))))) - replacement in src/xmpp/mod.rs at line 229
Err(Either::B((e, a))) => {if let Some(client) = a.into_inner() {future::ok(future::Loop::Break((XmppConnection {state: XmppState { client },account,Err(Either::B((e, a))) => Box::new(if let Some(client) = a.into_inner() {future::ok(future::Loop::Break((XmppConnection {state: XmppState {client,roster,counter, - replacement in src/xmpp/mod.rs at line 237[2.3262]→[2.3262:3486](∅→∅),[2.3486]→[3.2940:2966](∅→∅),[3.2573]→[3.2940:2966](∅→∅),[3.2940]→[3.2940:2966](∅→∅)
Err(e.into()),)))} else {future::err((account, Err(e.into())))}}account,},Err(e),)))} else {future::err((account, Err(e)))}), - replacement in src/xmpp/mod.rs at line 250
/// returns error if something went wrongfn online(&mut self, event: Event) -> Result<bool, failure::Error> {/// returns error if something went wrong and xmpp connection is brokenfn online(&mut self, event: Event) -> Result<bool, ()> { - replacement in src/xmpp/mod.rs at line 263
Err(format_err!("Disconnected while online"))Err(()) - replacement in src/xmpp/mod.rs at line 268
fn process_initial_roster(&mut self, event: Event) -> Result<bool, failure::Error> {fn process_initial_roster(&mut self, event: Event) -> Result<bool, ()> { - replacement in src/xmpp/mod.rs at line 277
Err(format_err!("Get error instead of roster"))error!("Get error instead of roster");Err(()) - replacement in src/xmpp/mod.rs at line 291
Err(e) => Err(format_err!("Cann't parse roster: {}", e)),Err(e) => {error!("Cann't parse roster: {}", e);Err(())} - replacement in src/xmpp/mod.rs at line 297
_ => Err(format_err!("Unknown result of roster")),_ => {error!("Unknown result of roster");Err(())} - replacement in src/xmpp/mod.rs at line 306
Err(format_err!("Iq stanza without id"))error!("Iq stanza without id");Err(()) - replacement in src/xmpp/mod.rs at line 313
Err(format_err!("Wrong event while waiting roster"))error!("Wrong event while waiting roster");Err(()) - replacement in src/xmpp/mod.rs at line 323
F: Future<Error = E>,E: Into<failure::Error>,F: Future<Error = E> + 'static,E: 'static, - replacement in src/xmpp/mod.rs at line 326
let XmppConnection { account, state } = self;let XmppConnection {account,state:XmppState {client,roster,counter,},} = self; - replacement in src/xmpp/mod.rs at line 341
state.clientclient - replacement in src/xmpp/mod.rs at line 345
(account2, Err(failure::SyncFailure::new(e).into()))account2 - replacement in src/xmpp/mod.rs at line 349
state: XmppState { client },state: XmppState {client,roster,counter,}, - replacement in src/xmpp/mod.rs at line 357
}).then(|r| match r {Err((account, e)) => {error!("Cann't wait roster: {}",e.err().map_or_else(|| std::borrow::Cow::Borrowed("None"),|e| e.to_string().into()));future::err(account)}Ok((conn, _)) => future::ok(conn),.map_err(|(account, _)| account).and_then(|(conn, r)| match r {Ok(Either::A(_)) => future::ok(conn),Ok(Either::B(_)) => future::err(conn.account),Err(_e) => future::err(conn.account),}) - replacement in src/xmpp/mod.rs at line 371
F: Future<Error = E>,E: Into<failure::Error>,F: Future<Error = E> + 'static,E: Into<failure::Error> + 'static, - replacement in src/xmpp/mod.rs at line 374
let XmppConnection { account, state } = self;let XmppConnection {account,state:XmppState {client,roster,counter,},} = self; - replacement in src/xmpp/mod.rs at line 389
state.clientclient - replacement in src/xmpp/mod.rs at line 393
(account2, Err(failure::SyncFailure::new(e).into()))account2 - replacement in src/xmpp/mod.rs at line 397
state: XmppState { client },state: XmppState {client,roster,counter,}, - replacement in src/xmpp/mod.rs at line 416
Err(format_err!("Wrong event while waiting self-presence"))error!("Wrong event while waiting self-presence");Err(()) - edit in src/xmpp/mod.rs at line 422
.map_err(|(account, _)| account).and_then(|(conn, r)| match r {Ok(Either::A(_)) => future::ok(conn),Ok(Either::B(_)) => future::err(conn.account),Err(_e) => future::err(conn.account),}) - edit in src/xmpp/mod.rs at line 429[2.5325]→[2.5325:5597](∅→∅),[2.5597]→[3.5425:5440](∅→∅),[3.6094]→[3.5425:5440](∅→∅),[3.9320]→[3.5425:5440](∅→∅),[3.5440]→[2.5598:5631](∅→∅)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.then(|r| match r {Err((account, _e)) => {error!("Cann't wait self-presence");future::err(account)}Ok((conn, _)) => future::ok(conn),})================================ - replacement in src/xmpp/mod.rs at line 433
_cmd: &XmppCommand,cmd: &XmppCommand, - edit in src/xmpp/mod.rs at line 436
if let Some(_jid_data) = self.state.roster.get(&cmd.xmpp_to) {info!("Jid {} in roster", cmd.xmpp_to);} else {info!("Jid {} not in roster", cmd.xmpp_to);} - edit in src/xmpp/mod.rs at line 442
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<