Directly use id for initial roster request

[?]
Jan 1, 2019, 5:54 PM
UAT5MV5OUZS4UW3ZOEMNG75WZOS6W4274FI6F65GQX3TH7KWSCXQC

Dependencies

  • [2] CBWCXUZZ Prepare adding new items to roster
  • [3] EBETRYK7 Add counter for id. Check for jid in roster
  • [4] UMTLHH77 Process commands in the separate function
  • [5] V5HDBSZM Use jid for receiver address
  • [6] ALP2YJIU Rename XmppState to XmppProcessState
  • [7] 3FYEOGCI Move additional rarely changed data to separate structure
  • [8] SU4DNVCB Start to processing roster data
  • [9] HCCX7VW6 Generate ids from counter
  • [10] FWJDW3G5 Allow process xmpp incoming stanzas with futures
  • [11] FV6BJ5K6 Send self-presence and store account info in Rc so it willbe used in some future in parallel
  • [12] UIXIQHDY Wait for commands via new processing code
  • [13] OANBCLN5 Move xmpp client into XmppState
  • [14] WJNXI6Z4 Fill roster
  • [15] AYQZ2UIA Update deps
  • [16] QTCUURXN Add additional requirement for command stream
  • [17] BWDUANCV Second part of processing result is only about stop_future
  • [18] 4LRBIGVT Show info about xmpp errors
  • [19] 5IKA4GO7 Rename xmpp client field from "inner" to "client"
  • [20] PFC7OJQF Query roster
  • [21] VS6AHRWI Move XMPP to separate dir

Change contents

  • replacement in src/xmpp/stanzas.rs at line 4
    [3.141][2.0:42]()
    use xmpp_parsers::roster::{Item, Roster};
    [3.141]
    [3.141]
    use xmpp_parsers::roster::Roster;
  • edit in src/xmpp/stanzas.rs at line 17
    [3.156]
    [2.43]
    ver: None,
  • edit in src/xmpp/stanzas.rs at line 19
    [2.66][3.156:175](),[3.156][3.156:175]()
    ver: None,
  • edit in src/xmpp/stanzas.rs at line 22
    [3.270][2.67:445]()
    }
    pub fn make_add_roster(id: &str, jid: jid::Jid) -> Element {
    let mut add_roster = Iq::from_set(Roster {
    items: vec![Item {
    jid,
    name: None,
    subscription: xmpp_parsers::roster::Subscription::None,
    groups: vec![],
    }],
    ver: None,
    });
    add_roster.id = Some(id.to_string());
    add_roster.into()
  • edit in src/xmpp/mod.rs at line 11
    [3.353][3.320:321](),[3.320][3.320:321](),[3.320][3.320:321](),[3.321][3.0:46]()
    const ID_GET_ROSTER: &str = "id_get_roster0";
  • replacement in src/xmpp/mod.rs at line 15
    [2.519][2.519:540]()
    _counter: usize,
    [2.519]
    [2.540]
    counter: usize,
  • replacement in src/xmpp/mod.rs at line 253
    [3.4394][3.4782:4859]()
    fn process_initial_roster(&mut self, event: Event) -> Result<bool, ()> {
    [3.4394]
    [3.4471]
    fn process_initial_roster(&mut self, event: Event, id_init_roster: &str) -> Result<bool, ()> {
  • replacement in src/xmpp/mod.rs at line 259
    [3.4690][3.3485:3534]()
    if id == ID_GET_ROSTER {
    [3.4690]
    [3.4739]
    if id == id_init_roster {
  • replacement in src/xmpp/mod.rs at line 314
    [3.5676][2.4344:4391]()
    state: XmppState { client, data },
    [3.5676]
    [3.5827]
    state: XmppState { client, mut data },
  • replacement in src/xmpp/mod.rs at line 318
    [3.6905][3.3734:3800]()
    let get_roster = stanzas::make_get_roster(ID_GET_ROSTER);
    [3.6905]
    [3.6971]
    data.counter += 1;
    let id_init_roster = format!("id{}", data.counter);
    let get_roster = stanzas::make_get_roster(&id_init_roster);
  • replacement in src/xmpp/mod.rs at line 335
    [3.7416][3.7416:7497](),[3.7416][3.7416:7497](),[3.7416][3.7416:7497](),[3.7416][3.7416:7497](),[3.7416][3.7416:7497](),[3.7416][3.7416:7497](),[3.7416][3.7416:7497](),[3.7416][3.7416:7497]()
    .processing(XmppConnection::process_initial_roster, stop_future)
    [3.7416]
    [3.6048]
    .processing(
    move |conn, event| conn.process_initial_roster(event, &id_init_roster),
    stop_future,
    )
  • replacement in src/xmpp/mod.rs at line 409
    [2.4722][2.4722:4786]()
    if self.state.data.roster.get(&cmd.xmpp_to).is_some() {
    [2.4722]
    [2.4786]
    if let Some(_jid_data) = self.state.data.roster.get(&cmd.xmpp_to) {
  • edit in src/xmpp/mod.rs at line 411
    [2.4838][2.4838:4867]()
    future::ok(self)
  • edit in src/xmpp/mod.rs at line 413
    [2.4940][2.4940:5454]()
    let XmppConnection {
    account,
    state: XmppState { client, mut data },
    } = self;
    data.counter += 1;
    let id_add_roster = format!("id{}", data.counter);
    let add_roster = stanzas::make_add_roster(&id_add_roster, cmd.xmpp_to.clone());
    info!("Add jid to roster... {:?}", add_roster);
    future::ok(XmppConnection {
    account,
    state: XmppState { client, data },
    })
  • edit in src/xmpp/mod.rs at line 414
    [2.5464]
    [2.5464]
    future::ok(self)