正在查看: 95爱播免登录版 v3.1.9 应用的 OfflineMessageManager.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: 95爱播免登录版 v3.1.9 应用的 OfflineMessageManager.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package org.jivesoftware.smackx;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.jivesoftware.smack.Connection;
import org.jivesoftware.smack.PacketCollector;
import org.jivesoftware.smack.SmackConfiguration;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.filter.AndFilter;
import org.jivesoftware.smack.filter.PacketExtensionFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.PacketIDFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smackx.packet.DiscoverItems;
import org.jivesoftware.smackx.packet.OfflineMessageRequest;
public class OfflineMessageManager {
private static final String namespace = "http://jabber.org/protocol/offline";
private Connection connection;
private PacketFilter packetFilter = new AndFilter(new PacketExtensionFilter("offline", namespace), new PacketTypeFilter(Message.class));
public OfflineMessageManager(Connection connection) {
this.connection = connection;
}
public void deleteMessages(List<String> list) throws XMPPException {
Packet offlineMessageRequest = new OfflineMessageRequest();
Iterator<String> it = list.iterator();
while (it.hasNext()) {
OfflineMessageRequest.Item item = new OfflineMessageRequest.Item(it.next());
item.setAction("remove");
offlineMessageRequest.addItem(item);
}
PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(offlineMessageRequest.getPacketID()));
this.connection.sendPacket(offlineMessageRequest);
IQ iq = (IQ) createPacketCollector.nextResult(SmackConfiguration.getPacketReplyTimeout());
createPacketCollector.cancel();
if (iq == null) {
throw new XMPPException("No response from server.");
}
if (iq.getError() != null) {
throw new XMPPException(iq.getError());
}
}
public Iterator<OfflineMessageHeader> getHeaders() throws XMPPException {
ArrayList arrayList = new ArrayList();
Iterator items = ServiceDiscoveryManager.getInstanceFor(this.connection).discoverItems(null, namespace).getItems();
while (items.hasNext()) {
arrayList.add(new OfflineMessageHeader((DiscoverItems.Item) 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(final List<String> list) throws XMPPException {
ArrayList arrayList = new ArrayList();
Packet offlineMessageRequest = new OfflineMessageRequest();
Iterator<String> it = list.iterator();
while (it.hasNext()) {
OfflineMessageRequest.Item item = new OfflineMessageRequest.Item(it.next());
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() {
@Override
public boolean accept(Packet packet) {
return list.contains(packet.getExtension("offline", OfflineMessageManager.namespace).getNode());
}
}));
this.connection.sendPacket(offlineMessageRequest);
IQ iq = (IQ) createPacketCollector.nextResult(SmackConfiguration.getPacketReplyTimeout());
createPacketCollector.cancel();
if (iq == null) {
throw new XMPPException("No response from server.");
}
if (iq.getError() != null) {
throw new XMPPException(iq.getError());
}
for (Message message = (Message) createPacketCollector2.nextResult(SmackConfiguration.getPacketReplyTimeout()); message != null; message = (Message) createPacketCollector2.nextResult(SmackConfiguration.getPacketReplyTimeout())) {
arrayList.add(message);
}
createPacketCollector2.cancel();
return arrayList.iterator();
}
public boolean supportsFlexibleRetrieval() throws XMPPException {
return ServiceDiscoveryManager.getInstanceFor(this.connection).discoverInfo(this.connection.getServiceName()).containsFeature(namespace);
}
public void deleteMessages() throws XMPPException {
Packet offlineMessageRequest = new OfflineMessageRequest();
offlineMessageRequest.setPurge(true);
PacketCollector createPacketCollector = this.connection.createPacketCollector(new PacketIDFilter(offlineMessageRequest.getPacketID()));
this.connection.sendPacket(offlineMessageRequest);
IQ iq = (IQ) createPacketCollector.nextResult(SmackConfiguration.getPacketReplyTimeout());
createPacketCollector.cancel();
if (iq != null) {
if (iq.getError() != null) {
throw new XMPPException(iq.getError());
}
return;
}
throw new XMPPException("No response from server.");
}
public Iterator<Message> getMessages() throws XMPPException {
ArrayList arrayList = new ArrayList();
Packet 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(SmackConfiguration.getPacketReplyTimeout());
createPacketCollector.cancel();
if (iq != null) {
if (iq.getError() == null) {
for (Message message = (Message) createPacketCollector2.nextResult(SmackConfiguration.getPacketReplyTimeout()); message != null; message = (Message) createPacketCollector2.nextResult(SmackConfiguration.getPacketReplyTimeout())) {
arrayList.add(message);
}
createPacketCollector2.cancel();
return arrayList.iterator();
}
throw new XMPPException(iq.getError());
}
throw new XMPPException("No response from server.");
}
}