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:
parent
5d32735ad7
commit
7ed29b9d5f
39 changed files with 1943 additions and 3 deletions
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue