1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2025-09-09 10:19:41 +02:00

Introduce websocket module into smack

This commit is contained in:
adiaholic 2020-05-14 18:05:37 +05:30 committed by Aditya Borikar
parent 5d32735ad7
commit 7ed29b9d5f
39 changed files with 1943 additions and 3 deletions

View file

@ -61,13 +61,13 @@ import org.jivesoftware.smack.fsm.StateTransitionResult;
import org.jivesoftware.smack.fsm.StateTransitionResult.AttemptResult;
import org.jivesoftware.smack.internal.AbstractStats;
import org.jivesoftware.smack.internal.SmackTlsContext;
import org.jivesoftware.smack.packet.AbstractStreamClose;
import org.jivesoftware.smack.packet.AbstractStreamOpen;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Nonza;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.packet.Stanza;
import org.jivesoftware.smack.packet.StreamClose;
import org.jivesoftware.smack.packet.StreamError;
import org.jivesoftware.smack.packet.TopLevelStreamElement;
import org.jivesoftware.smack.packet.XmlEnvironment;
@ -138,6 +138,11 @@ public final class ModularXmppClientToServerConnection extends AbstractXMPPConne
ModularXmppClientToServerConnection.this.notifyConnectionError(e);
}
@Override
public void setCurrentConnectionExceptionAndNotify(Exception exception) {
ModularXmppClientToServerConnection.this.setCurrentConnectionExceptionAndNotify(exception);
}
@Override
public void onStreamOpen(XmlPullParser parser) {
ModularXmppClientToServerConnection.this.onStreamOpen(parser);
@ -179,6 +184,11 @@ public final class ModularXmppClientToServerConnection extends AbstractXMPPConne
return inputOutputFilters.listIterator(inputOutputFilters.size());
}
@Override
public void waitForFeaturesReceived(String waitFor) throws InterruptedException, SmackException, XMPPException {
ModularXmppClientToServerConnection.this.waitForFeaturesReceived(waitFor);
}
@Override
public void newStreamOpenWaitForFeaturesSequence(String waitFor) throws InterruptedException,
SmackException, XMPPException {
@ -930,7 +940,9 @@ public final class ModularXmppClientToServerConnection extends AbstractXMPPConne
public StateTransitionResult.AttemptResult transitionInto(WalkStateGraphContext walkStateGraphContext) {
closingStreamReceived = false;
boolean streamCloseIssued = outgoingElementsQueue.offerAndShutdown(StreamClose.INSTANCE);
StreamOpenAndCloseFactory openAndCloseFactory = activeTransport.getStreamOpenAndCloseFactory();
AbstractStreamClose closeStreamElement = openAndCloseFactory.createStreamClose();
boolean streamCloseIssued = outgoingElementsQueue.offerAndShutdown(closeStreamElement);
if (streamCloseIssued) {
activeTransport.notifyAboutNewOutgoingElements();

View file

@ -85,6 +85,8 @@ public abstract class ModularXmppClientToServerConnectionInternal {
public abstract void notifyConnectionError(Exception e);
public abstract void setCurrentConnectionExceptionAndNotify(Exception exception);
public abstract void onStreamOpen(XmlPullParser parser);
public abstract void onStreamClosed();
@ -99,6 +101,8 @@ public abstract class ModularXmppClientToServerConnectionInternal {
public abstract ListIterator<XmppInputOutputFilter> getXmppInputOutputFilterEndIterator();
public abstract void waitForFeaturesReceived(String waitFor) throws InterruptedException, SmackException, XMPPException;
public abstract void newStreamOpenWaitForFeaturesSequence(String waitFor) throws InterruptedException,
NoResponseException, NotConnectedException, SmackException, XMPPException;

View file

@ -19,6 +19,7 @@ package org.jivesoftware.smack.packet;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.packet.StreamOpen.StreamContentNamespace;
import org.jivesoftware.smack.util.StringUtils;
import org.jivesoftware.smack.util.XmlStringBuilder;
/**
* AbstractStreamOpen is actually a {@link TopLevelStreamElement}, however we
@ -80,4 +81,9 @@ public abstract class AbstractStreamOpen implements Nonza {
throw new IllegalStateException();
}
}
protected final void addCommonAttributes(XmlStringBuilder xml) {
xml.optAttribute("to", to);
xml.optAttribute("version", VERSION);
}
}

View file

@ -18,6 +18,7 @@ package org.jivesoftware.smack.util.rce;
import org.jivesoftware.smack.util.ToStringUtil;
import org.jxmpp.jid.DomainBareJid;
import org.minidns.dnsname.DnsName;
public abstract class RemoteConnectionEndpointLookupFailure {
@ -67,4 +68,17 @@ public abstract class RemoteConnectionEndpointLookupFailure {
return dnsName;
}
}
public static class HttpLookupFailure extends RemoteConnectionEndpointLookupFailure {
private final DomainBareJid host;
public HttpLookupFailure(DomainBareJid host, Exception exception) {
super("Http lookup exception for " + host, exception);
this.host = host;
}
public DomainBareJid getHost() {
return host;
}
}
}

View file

@ -20,6 +20,7 @@
<className>org.jivesoftware.smack.android.AndroidSmackInitializer</className>
<className>org.jivesoftware.smack.java7.Java7SmackInitializer</className>
<className>org.jivesoftware.smack.im.SmackImInitializer</className>
<className>org.jivesoftware.smack.websocket.WebsocketInitializer</className>
<className>org.jivesoftware.smackx.omemo.OmemoInitializer</className>
<className>org.jivesoftware.smackx.ox.util.OpenPgpInitializer</className>
</optionalStartupClasses>