CarrotChat v2.8.80.240429版本的 MD5 值为:fdf98761f01e715a89df24b85b0d206e
以下内容为反编译后的 Bytestream.java 源代码,内容仅作参考
package org.jivesoftware.smackx.bytestreams.socks5.packet;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.httpclient.cookie.Cookie2;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.NamedElement;
import org.jivesoftware.smack.util.Objects;
import org.jivesoftware.smack.util.ParserUtils;
import org.jivesoftware.smack.util.StringUtils;
import org.jivesoftware.smack.util.XmlStringBuilder;
import org.jxmpp.jid.Jid;
public class Bytestream extends IQ {
public static final String ELEMENT = "query";
public static final String NAMESPACE = "http://jabber.org/protocol/bytestreams";
private Mode mode;
private String sessionID;
private final List<StreamHost> streamHosts;
private Activate toActivate;
private StreamHostUsed usedHost;
static class AnonymousClass1 {
static final int[] $SwitchMap$org$jivesoftware$smack$packet$IQ$Type;
static {
int[] iArr = new int[IQ.Type.values().length];
$SwitchMap$org$jivesoftware$smack$packet$IQ$Type = iArr;
try {
iArr[IQ.Type.set.ordinal()] = 1;
} catch (NoSuchFieldError unused) {
}
try {
$SwitchMap$org$jivesoftware$smack$packet$IQ$Type[IQ.Type.result.ordinal()] = 2;
} catch (NoSuchFieldError unused2) {
}
try {
$SwitchMap$org$jivesoftware$smack$packet$IQ$Type[IQ.Type.get.ordinal()] = 3;
} catch (NoSuchFieldError unused3) {
}
}
}
public static class Activate implements NamedElement {
public static String ELEMENTNAME = "activate";
private final Jid target;
public Activate(Jid jid) {
this.target = jid;
}
@Override
public String getElementName() {
return ELEMENTNAME;
}
public Jid getTarget() {
return this.target;
}
@Override
public XmlStringBuilder toXML() {
XmlStringBuilder xmlStringBuilder = new XmlStringBuilder(this);
xmlStringBuilder.rightAngleBracket();
xmlStringBuilder.escape(getTarget());
xmlStringBuilder.closeElement(this);
return xmlStringBuilder;
}
}
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 NamedElement {
public static String ELEMENTNAME = "streamhost";
private final Jid JID;
private final String addy;
private final int port;
public StreamHost(Jid jid, String str) {
this(jid, str, 0);
}
public String getAddress() {
return this.addy;
}
@Override
public String getElementName() {
return ELEMENTNAME;
}
public Jid getJID() {
return this.JID;
}
public int getPort() {
return this.port;
}
public StreamHost(Jid jid, String str, int i10) {
this.JID = (Jid) Objects.requireNonNull(jid, "StreamHost JID must not be null");
this.addy = (String) StringUtils.requireNotNullOrEmpty(str, "StreamHost address must not be null");
this.port = i10;
}
@Override
public XmlStringBuilder toXML() {
XmlStringBuilder xmlStringBuilder = new XmlStringBuilder(this);
xmlStringBuilder.attribute(ParserUtils.JID, getJID());
xmlStringBuilder.attribute("host", getAddress());
if (getPort() != 0) {
xmlStringBuilder.attribute(Cookie2.PORT, Integer.toString(getPort()));
} else {
xmlStringBuilder.attribute("zeroconf", "_jabber.bytestreams");
}
xmlStringBuilder.closeEmptyElement();
return xmlStringBuilder;
}
}
public static class StreamHostUsed implements NamedElement {
public static String ELEMENTNAME = "streamhost-used";
private final Jid JID;
public StreamHostUsed(Jid jid) {
this.JID = jid;
}
@Override
public String getElementName() {
return ELEMENTNAME;
}
public Jid getJID() {
return this.JID;
}
@Override
public XmlStringBuilder toXML() {
XmlStringBuilder xmlStringBuilder = new XmlStringBuilder(this);
xmlStringBuilder.attribute(ParserUtils.JID, getJID());
xmlStringBuilder.closeEmptyElement();
return xmlStringBuilder;
}
}
public Bytestream() {
super("query", NAMESPACE);
this.mode = Mode.tcp;
this.streamHosts = new ArrayList();
}
public StreamHost addStreamHost(Jid jid, String str) {
return addStreamHost(jid, str, 0);
}
public int countStreamHosts() {
return this.streamHosts.size();
}
@Override
protected IQ.IQChildElementXmlStringBuilder getIQChildElementBuilder(IQ.IQChildElementXmlStringBuilder iQChildElementXmlStringBuilder) {
int i10 = AnonymousClass1.$SwitchMap$org$jivesoftware$smack$packet$IQ$Type[getType().ordinal()];
if (i10 != 1) {
if (i10 != 2) {
if (i10 == 3) {
iQChildElementXmlStringBuilder.setEmptyElement();
} else {
throw new IllegalStateException();
}
} else {
iQChildElementXmlStringBuilder.rightAngleBracket();
iQChildElementXmlStringBuilder.optAppend(getUsedHost());
Iterator<StreamHost> it = this.streamHosts.iterator();
while (it.hasNext()) {
iQChildElementXmlStringBuilder.append(it.next().toXML());
}
}
} else {
iQChildElementXmlStringBuilder.optAttribute("sid", getSessionID());
iQChildElementXmlStringBuilder.optAttribute("mode", getMode());
iQChildElementXmlStringBuilder.rightAngleBracket();
if (getToActivate() == null) {
Iterator<StreamHost> it2 = getStreamHosts().iterator();
while (it2.hasNext()) {
iQChildElementXmlStringBuilder.append(it2.next().toXML());
}
} else {
iQChildElementXmlStringBuilder.append(getToActivate().toXML());
}
}
return iQChildElementXmlStringBuilder;
}
public Mode getMode() {
return this.mode;
}
public String getSessionID() {
return this.sessionID;
}
public StreamHost getStreamHost(Jid jid) {
if (jid == null) {
return null;
}
for (StreamHost streamHost : this.streamHosts) {
if (streamHost.getJID().equals((CharSequence) jid)) {
return streamHost;
}
}
return null;
}
public List<StreamHost> getStreamHosts() {
return Collections.unmodifiableList(this.streamHosts);
}
public Activate getToActivate() {
return this.toActivate;
}
public StreamHostUsed getUsedHost() {
return this.usedHost;
}
public void setMode(Mode mode) {
this.mode = mode;
}
public void setSessionID(String str) {
this.sessionID = str;
}
public void setToActivate(Jid jid) {
this.toActivate = new Activate(jid);
}
public void setUsedHost(Jid jid) {
this.usedHost = new StreamHostUsed(jid);
}
public StreamHost addStreamHost(Jid jid, String str, int i10) {
StreamHost streamHost = new StreamHost(jid, str, i10);
addStreamHost(streamHost);
return streamHost;
}
public Bytestream(String str) {
this();
setSessionID(str);
}
public void addStreamHost(StreamHost streamHost) {
this.streamHosts.add(streamHost);
}
}