Search in sources :

Example 6 with ServiceDiscoveryResult

use of de.pixart.messenger.entities.ServiceDiscoveryResult in project Pix-Art-Messenger by kriztan.

the class XmppConnection method sendServiceDiscoveryInfo.

private void sendServiceDiscoveryInfo(final Jid jid) {
    mPendingServiceDiscoveries.incrementAndGet();
    final IqPacket iq = new IqPacket(IqPacket.TYPE.GET);
    iq.setTo(jid);
    iq.query("http://jabber.org/protocol/disco#info");
    this.sendIqPacket(iq, new OnIqPacketReceived() {

        @Override
        public void onIqPacketReceived(final Account account, final IqPacket packet) {
            if (packet.getType() == IqPacket.TYPE.RESULT) {
                boolean advancedStreamFeaturesLoaded;
                synchronized (XmppConnection.this.disco) {
                    ServiceDiscoveryResult result = new ServiceDiscoveryResult(packet);
                    if (jid.equals(account.getServer())) {
                        mXmppConnectionService.databaseBackend.insertDiscoveryResult(result);
                    }
                    disco.put(jid, result);
                    advancedStreamFeaturesLoaded = disco.containsKey(account.getServer()) && disco.containsKey(account.getJid().toBareJid());
                }
                if (advancedStreamFeaturesLoaded && (jid.equals(account.getServer()) || jid.equals(account.getJid().toBareJid()))) {
                    enableAdvancedStreamFeatures();
                }
            } else {
                Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": could not query disco info for " + jid.toString());
            }
            if (packet.getType() != IqPacket.TYPE.TIMEOUT) {
                if (mPendingServiceDiscoveries.decrementAndGet() == 0 && mWaitForDisco.compareAndSet(true, false)) {
                    finalizeBind();
                }
            }
        }
    });
}
Also used : Account(de.pixart.messenger.entities.Account) ServiceDiscoveryResult(de.pixart.messenger.entities.ServiceDiscoveryResult) IqPacket(de.pixart.messenger.xmpp.stanzas.IqPacket)

Aggregations

ServiceDiscoveryResult (de.pixart.messenger.entities.ServiceDiscoveryResult)6 Pair (android.util.Pair)2 Account (de.pixart.messenger.entities.Account)2 Presence (de.pixart.messenger.entities.Presence)2 IqPacket (de.pixart.messenger.xmpp.stanzas.IqPacket)2 Cursor (android.database.Cursor)1 SQLiteDatabase (android.database.sqlite.SQLiteDatabase)1 Element (de.pixart.messenger.xml.Element)1 OnIqPacketReceived (de.pixart.messenger.xmpp.OnIqPacketReceived)1 Jid (de.pixart.messenger.xmpp.jid.Jid)1 EnablePacket (de.pixart.messenger.xmpp.stanzas.streammgmt.EnablePacket)1 JSONException (org.json.JSONException)1