曹妃甸核酸检测平台.apk(点击下载) / OfflineMessageManager.java


package asmack.org.jivesoftware.smackx;

import asmack.org.jivesoftware.smack.Connection;
import asmack.org.jivesoftware.smack.PacketCollector;
import asmack.org.jivesoftware.smack.SmackConfiguration;
import asmack.org.jivesoftware.smack.XMPPException;
import asmack.org.jivesoftware.smack.filter.AndFilter;
import asmack.org.jivesoftware.smack.filter.PacketExtensionFilter;
import asmack.org.jivesoftware.smack.filter.PacketFilter;
import asmack.org.jivesoftware.smack.filter.PacketIDFilter;
import asmack.org.jivesoftware.smack.filter.PacketTypeFilter;
import asmack.org.jivesoftware.smack.packet.IQ;
import asmack.org.jivesoftware.smack.packet.Message;
import asmack.org.jivesoftware.smack.packet.Packet;
import asmack.org.jivesoftware.smackx.packet.DiscoverItems;
import asmack.org.jivesoftware.smackx.packet.MessageEvent;
import asmack.org.jivesoftware.smackx.packet.OfflineMessageInfo;
import asmack.org.jivesoftware.smackx.packet.OfflineMessageRequest;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class OfflineMessageManager {
    private static final String namespace = "http://jabber.org/protocol/offline";
    private Connection connection;
    private PacketFilter packetFilter = new AndFilter(new PacketExtensionFilter(MessageEvent.OFFLINE, namespace), new PacketTypeFilter(Message.class));

    public OfflineMessageManager(Connection connection2) {
        this.connection = connection2;
    }

    public void deleteMessages() throws XMPPException {
        OfflineMessageRequest offlineMessageRequest = new OfflineMessageRequest();
        offlineMessageRequest.setPurge(true);
        PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(offlineMessageRequest.getPacketID()));
        this.connection.sendPacket(offlineMessageRequest);
        IQ iq = (IQ) createPacketCollector.nextResult((long) SmackConfiguration.getPacketReplyTimeout());
        createPacketCollector.cancel();
        if (iq == null) {
            throw new XMPPException("No response from server.");
        } else if (iq.getError() != null) {
            throw new XMPPException(iq.getError());
        }
    }

    public void deleteMessages(List<String> list) throws XMPPException {
        OfflineMessageRequest offlineMessageRequest = new OfflineMessageRequest();
        for (String str : list) {
            OfflineMessageRequest.Item item = new OfflineMessageRequest.Item(str);
            item.setAction(DiscoverItems.Item.REMOVE_ACTION);
            offlineMessageRequest.addItem(item);
        }
        PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(offlineMessageRequest.getPacketID()));
        this.connection.sendPacket(offlineMessageRequest);
        IQ iq = (IQ) createPacketCollector.nextResult((long) SmackConfiguration.getPacketReplyTimeout());
        createPacketCollector.cancel();
        if (iq == null) {
            throw new XMPPException("No response from server.");
        } else if (iq.getError() != null) {
            throw new XMPPException(iq.getError());
        }
    }

    public Iterator<OfflineMessageHeader> getHeaders() throws XMPPException {
        ArrayList arrayList = new ArrayList();
        Iterator<DiscoverItems.Item> items = ServiceDiscoveryManager.getInstanceFor(this.connection).discoverItems(null, namespace).getItems();
        while (items.hasNext()) {
            arrayList.add(new OfflineMessageHeader(items.next()));
        }
        return arrayList.iterator();
    }

    public int getMessageCount() throws XMPPException {
        Form formFrom = Form.getFormFrom(ServiceDiscoveryManager.getInstanceFor(this.connection).discoverInfo(null, namespace));
        if (formFrom != null) {
            return Integer.parseInt(formFrom.getField("number_of_messages").getValues().next());
        }
        return 0;
    }

    public Iterator<Message> getMessages() throws XMPPException {
        ArrayList arrayList = new ArrayList();
        OfflineMessageRequest offlineMessageRequest = new OfflineMessageRequest();
        offlineMessageRequest.setFetch(true);
        PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(offlineMessageRequest.getPacketID()));
        PacketCollector createPacketCollector2 = this.connection.createPacketCollector(this.packetFilter);
        this.connection.sendPacket(offlineMessageRequest);
        IQ iq = (IQ) createPacketCollector.nextResult((long) SmackConfiguration.getPacketReplyTimeout());
        createPacketCollector.cancel();
        if (iq == null) {
            throw new XMPPException("No response from server.");
        } else if (iq.getError() == null) {
            while (true) {
                Message message = (Message) createPacketCollector2.nextResult((long) SmackConfiguration.getPacketReplyTimeout());
                if (message == null) {
                    createPacketCollector2.cancel();
                    return arrayList.iterator();
                }
                arrayList.add(message);
            }
        } else {
            throw new XMPPException(iq.getError());
        }
    }

    public Iterator<Message> getMessages(final List<String> list) throws XMPPException {
        ArrayList arrayList = new ArrayList();
        OfflineMessageRequest offlineMessageRequest = new OfflineMessageRequest();
        for (String str : list) {
            OfflineMessageRequest.Item item = new OfflineMessageRequest.Item(str);
            item.setAction("view");
            offlineMessageRequest.addItem(item);
        }
        PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(offlineMessageRequest.getPacketID()));
        PacketCollector createPacketCollector2 = this.connection.createPacketCollector(new AndFilter(this.packetFilter, new PacketFilter() {
            /* class asmack.org.jivesoftware.smackx.OfflineMessageManager.AnonymousClass1 */

            @Override // asmack.org.jivesoftware.smack.filter.PacketFilter
            public boolean accept(Packet packet) {
                return list.contains(((OfflineMessageInfo) packet.getExtension(MessageEvent.OFFLINE, OfflineMessageManager.namespace)).getNode());
            }
        }));
        this.connection.sendPacket(offlineMessageRequest);
        IQ iq = (IQ) createPacketCollector.nextResult((long) SmackConfiguration.getPacketReplyTimeout());
        createPacketCollector.cancel();
        if (iq == null) {
            throw new XMPPException("No response from server.");
        } else if (iq.getError() == null) {
            while (true) {
                Message message = (Message) createPacketCollector2.nextResult((long) SmackConfiguration.getPacketReplyTimeout());
                if (message == null) {
                    createPacketCollector2.cancel();
                    return arrayList.iterator();
                }
                arrayList.add(message);
            }
        } else {
            throw new XMPPException(iq.getError());
        }
    }

    public boolean supportsFlexibleRetrieval() throws XMPPException {
        return ServiceDiscoveryManager.getInstanceFor(this.connection).discoverInfo(null).containsFeature(namespace);
    }
}