package asmack.org.jivesoftware.smackx.packet; import asmack.org.jivesoftware.smack.packet.IQ; import asmack.org.jivesoftware.smack.packet.PacketExtension; import com.netease.yunxin.base.utils.StringUtils; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; public class Bytestream extends IQ { private Mode mode = Mode.tcp; private String sessionID; private final List<StreamHost> streamHosts = new ArrayList(); private Activate toActivate; private StreamHostUsed usedHost; public static class Activate implements PacketExtension { public static String ELEMENTNAME = "activate"; public String NAMESPACE = ""; private final String target; public Activate(String str) { this.target = str; } @Override // asmack.org.jivesoftware.smack.packet.PacketExtension public String getElementName() { return ELEMENTNAME; } @Override // asmack.org.jivesoftware.smack.packet.PacketExtension public String getNamespace() { return this.NAMESPACE; } public String getTarget() { return this.target; } @Override // asmack.org.jivesoftware.smack.packet.PacketExtension public String toXML() { return "<" + getElementName() + ">" + getTarget() + "</" + getElementName() + ">"; } } public enum Mode { tcp, udp; public static Mode fromName(String str) { try { return valueOf(str); } catch (Exception unused) { return tcp; } } } public static class StreamHost implements PacketExtension { public static String ELEMENTNAME = "streamhost"; public static String NAMESPACE = ""; private final String JID; private final String addy; private int port = 0; public StreamHost(String str, String str2) { this.JID = str; this.addy = str2; } public String getAddress() { return this.addy; } @Override // asmack.org.jivesoftware.smack.packet.PacketExtension public String getElementName() { return ELEMENTNAME; } public String getJID() { return this.JID; } @Override // asmack.org.jivesoftware.smack.packet.PacketExtension public String getNamespace() { return NAMESPACE; } public int getPort() { return this.port; } public void setPort(int i) { this.port = i; } @Override // asmack.org.jivesoftware.smack.packet.PacketExtension public String toXML() { String str; StringBuilder sb = new StringBuilder(); sb.append("<"); sb.append(getElementName()); sb.append(StringUtils.SPACE); sb.append("jid=\""); sb.append(getJID()); sb.append("\" "); sb.append("host=\""); sb.append(getAddress()); sb.append("\" "); if (getPort() != 0) { sb.append("port=\""); sb.append(getPort()); str = "\""; } else { str = "zeroconf=\"_jabber.bytestreams\""; } sb.append(str); sb.append("/>"); return sb.toString(); } } public static class StreamHostUsed implements PacketExtension { public static String ELEMENTNAME = "streamhost-used"; private final String JID; public String NAMESPACE = ""; public StreamHostUsed(String str) { this.JID = str; } @Override // asmack.org.jivesoftware.smack.packet.PacketExtension public String getElementName() { return ELEMENTNAME; } public String getJID() { return this.JID; } @Override // asmack.org.jivesoftware.smack.packet.PacketExtension public String getNamespace() { return this.NAMESPACE; } @Override // asmack.org.jivesoftware.smack.packet.PacketExtension public String toXML() { return "<" + getElementName() + StringUtils.SPACE + "jid=\"" + getJID() + "\" " + "/>"; } } public Bytestream() { } public Bytestream(String str) { setSessionID(str); } public StreamHost addStreamHost(String str, String str2) { return addStreamHost(str, str2, 0); } public StreamHost addStreamHost(String str, String str2, int i) { StreamHost streamHost = new StreamHost(str, str2); streamHost.setPort(i); addStreamHost(streamHost); return streamHost; } public void addStreamHost(StreamHost streamHost) { this.streamHosts.add(streamHost); } public int countStreamHosts() { return this.streamHosts.size(); } @Override // asmack.org.jivesoftware.smack.packet.IQ public String getChildElementXML() { String str; StringBuilder sb = new StringBuilder(); sb.append("<query xmlns=\"http://jabber.org/protocol/bytestreams\""); if (getType().equals(IQ.Type.SET)) { if (getSessionID() != null) { sb.append(" sid=\""); sb.append(getSessionID()); sb.append("\""); } if (getMode() != null) { sb.append(" mode = \""); sb.append(getMode()); sb.append("\""); } sb.append(">"); if (getToActivate() == null) { for (StreamHost streamHost : getStreamHosts()) { sb.append(streamHost.toXML()); } sb.append("</query>"); return sb.toString(); } str = getToActivate().toXML(); } else if (!getType().equals(IQ.Type.RESULT)) { return null; } else { sb.append(">"); if (getUsedHost() != null) { str = getUsedHost().toXML(); } else { if (countStreamHosts() > 0) { for (StreamHost streamHost2 : this.streamHosts) { sb.append(streamHost2.toXML()); } } sb.append("</query>"); return sb.toString(); } } sb.append(str); sb.append("</query>"); return sb.toString(); } public Mode getMode() { return this.mode; } public String getSessionID() { return this.sessionID; } public StreamHost getStreamHost(String str) { if (str == null) { return null; } for (StreamHost streamHost : this.streamHosts) { if (streamHost.getJID().equals(str)) { return streamHost; } } return null; } public Collection<StreamHost> getStreamHosts() { return Collections.unmodifiableCollection(this.streamHosts); } public Activate getToActivate() { return this.toActivate; } public StreamHostUsed getUsedHost() { return this.usedHost; } public void setMode(Mode mode2) { this.mode = mode2; } public void setSessionID(String str) { this.sessionID = str; } public void setToActivate(String str) { this.toActivate = new Activate(str); } public void setUsedHost(String str) { this.usedHost = new StreamHostUsed(str); } }