package asmack.org.jivesoftware.smackx.muc; import asmack.org.jivesoftware.smack.PacketListener; import asmack.org.jivesoftware.smack.filter.MessageTypeFilter; import asmack.org.jivesoftware.smack.filter.PacketExtensionFilter; import asmack.org.jivesoftware.smack.filter.PacketFilter; import asmack.org.jivesoftware.smack.filter.PacketTypeFilter; import asmack.org.jivesoftware.smack.packet.Message; import asmack.org.jivesoftware.smack.packet.Packet; import asmack.org.jivesoftware.smack.packet.Presence; import asmack.org.jivesoftware.smackx.GroupChatInvitation; class PacketMultiplexListener implements PacketListener { private static final PacketFilter DECLINES_FILTER = new PacketExtensionFilter(GroupChatInvitation.ELEMENT_NAME, "http://jabber.org/protocol/muc#user"); private static final PacketFilter MESSAGE_FILTER = new MessageTypeFilter(Message.Type.groupchat); private static final PacketFilter PRESENCE_FILTER = new PacketTypeFilter(Presence.class); private static final PacketFilter SUBJECT_FILTER = new PacketFilter() { /* class asmack.org.jivesoftware.smackx.muc.PacketMultiplexListener.AnonymousClass1 */ @Override // asmack.org.jivesoftware.smack.filter.PacketFilter public boolean accept(Packet packet) { return ((Message) packet).getSubject() != null; } }; private PacketListener declinesListener; private ConnectionDetachedPacketCollector messageCollector; private PacketListener presenceListener; private PacketListener subjectListener; public PacketMultiplexListener(ConnectionDetachedPacketCollector connectionDetachedPacketCollector, PacketListener packetListener, PacketListener packetListener2, PacketListener packetListener3) { if (connectionDetachedPacketCollector == null) { throw new IllegalArgumentException("MessageCollector is null"); } else if (packetListener == null) { throw new IllegalArgumentException("Presence listener is null"); } else if (packetListener2 == null) { throw new IllegalArgumentException("Subject listener is null"); } else if (packetListener3 != null) { this.messageCollector = connectionDetachedPacketCollector; this.presenceListener = packetListener; this.subjectListener = packetListener2; this.declinesListener = packetListener3; } else { throw new IllegalArgumentException("Declines listener is null"); } } @Override // asmack.org.jivesoftware.smack.PacketListener public void processPacket(Packet packet) { PacketListener packetListener; if (PRESENCE_FILTER.accept(packet)) { packetListener = this.presenceListener; } else if (MESSAGE_FILTER.accept(packet)) { this.messageCollector.processPacket(packet); if (SUBJECT_FILTER.accept(packet)) { packetListener = this.subjectListener; } else { return; } } else if (DECLINES_FILTER.accept(packet)) { packetListener = this.declinesListener; } else { return; } packetListener.processPacket(packet); } }