Class Bytestream
java.lang.Object
org.jivesoftware.smack.packet.Stanza
org.jivesoftware.smack.packet.IQ
org.jivesoftware.smackx.bytestreams.socks5.packet.Bytestream
- All Implemented Interfaces:
Element
,IqView
,NamedElement
,StanzaView
,TopLevelStreamElement
,XmlElement
,XmlLangElement
A stanza representing part of a SOCKS5 Bytestream negotiation.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
The stanza sent by the stream initiator to the stream proxy to activate the connection.static enum
The stream can be either a TCP stream or a UDP stream.static class
Stanza extension that represents a potential SOCKS5 proxy for the file transfer.static class
After selected a SOCKS5 stream host and successfully connecting, the target of the file transfer returns a byte stream stanza with the stream host used extension.Nested classes/interfaces inherited from class org.jivesoftware.smack.packet.IQ
IQ.IQChildElementXmlStringBuilder, IQ.ResponseType, IQ.Type
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
static final String
The XMPP namespace of the SOCKS5 Bytestream.Fields inherited from class org.jivesoftware.smack.packet.IQ
IQ_ELEMENT, QUERY_ELEMENT
Fields inherited from class org.jivesoftware.smack.packet.Stanza
DEFAULT_LANGUAGE, ITEM, language, TEXT
-
Constructor Summary
ConstructorDescriptionThe default constructor.Bytestream
(String SID) A constructor where the session ID can be specified. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds a potential stream host that the remote user can transfer the file through.addStreamHost
(Jid JID, String address) Adds a potential stream host that the remote user can connect to to receive the file.addStreamHost
(Jid JID, String address, int port) Adds a potential stream host that the remote user can connect to to receive the file.int
Returns the count of stream hosts contained in this packet.protected IQ.IQChildElementXmlStringBuilder
This method must be overwritten by IQ subclasses to create their child content.getMode()
Returns the transport mode.Returns the session ID related to the bytestream negotiation.getStreamHost
(Jid JID) Returns the stream host related to the given JID, or null if there is none.Returns the list of stream hosts contained in the packet.Returns the activate element of the stanza sent to the proxy host to verify the identity of the initiator and match them to the appropriate stream.Returns the SOCKS5 host connected to by the remote user.void
setMode
(Bytestream.Mode mode) Set the transport mode.void
setSessionID
(String sessionID) Set the session ID related to the bytestream.void
setToActivate
(Jid targetID) Upon the response from the target of the used host the activate stanza is sent to the SOCKS5 proxy.void
setUsedHost
(Jid JID) Upon connecting to the stream host the target of the stream replies to the initiator with the JID of the SOCKS5 host that they used.Methods inherited from class org.jivesoftware.smack.packet.IQ
createErrorResponse, createErrorResponse, createResultIQ, getChildElementName, getChildElementNamespace, getChildElementQName, getChildElementXML, getElementName, getType, setType, toString, toXML
Methods inherited from class org.jivesoftware.smack.packet.Stanza
addCommonAttributes, addExtension, addExtensions, appendErrorIfExists, getDefaultLanguage, getError, getExtension, getExtension, getExtensionElement, getExtensions, getExtensions, getExtensions, getExtensions, getExtensionsMap, getFrom, getLanguage, getNamespace, getStanzaId, getTo, hasExtension, hasExtension, hasStanzaIdSet, logCommonAttributes, overrideExtension, removeExtension, setError, setFrom, setNewStanzaId, setStanzaId, setTo, throwIfNoStanzaId
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.jivesoftware.smack.packet.IqView
isRequestIQ, isResponseIQ
Methods inherited from interface org.jivesoftware.smack.packet.StanzaView
getError, getExtension, getExtension, getExtensions, getExtensions, getExtensions, getFrom, getStanzaId, getTo, hasExtension, hasExtension, hasExtension
Methods inherited from interface org.jivesoftware.smack.packet.XmlElement
getQName
-
Field Details
-
ELEMENT
- See Also:
-
NAMESPACE
The XMPP namespace of the SOCKS5 Bytestream.- See Also:
-
-
Constructor Details
-
Bytestream
public Bytestream()The default constructor. -
Bytestream
A constructor where the session ID can be specified.- Parameters:
SID
- The session ID related to the negotiation.- See Also:
-
-
Method Details
-
setSessionID
Set the session ID related to the bytestream. The session ID is a unique identifier used to differentiate between stream negotiations.- Parameters:
sessionID
- the unique session ID that identifies the transfer.
-
getSessionID
Returns the session ID related to the bytestream negotiation.- Returns:
- Returns the session ID related to the bytestream negotiation.
- See Also:
-
setMode
Set the transport mode. This should be put in the initiation of the interaction.- Parameters:
mode
- the transport mode, either UDP or TCP- See Also:
-
getMode
Returns the transport mode.- Returns:
- Returns the transport mode.
- See Also:
-
addStreamHost
Adds a potential stream host that the remote user can connect to to receive the file.- Parameters:
JID
- The JID of the stream host.address
- The internet address of the stream host.- Returns:
- The added stream host.
-
addStreamHost
Adds a potential stream host that the remote user can connect to to receive the file.- Parameters:
JID
- The JID of the stream host.address
- The internet address of the stream host.port
- The port on which the remote host is seeking connections.- Returns:
- The added stream host.
-
addStreamHost
Adds a potential stream host that the remote user can transfer the file through.- Parameters:
host
- The potential stream host.
-
getStreamHosts
Returns the list of stream hosts contained in the packet.- Returns:
- Returns the list of stream hosts contained in the packet.
-
getStreamHost
Returns the stream host related to the given JID, or null if there is none.- Parameters:
JID
- The JID of the desired stream host.- Returns:
- Returns the stream host related to the given JID, or null if there is none.
-
countStreamHosts
Returns the count of stream hosts contained in this packet.- Returns:
- Returns the count of stream hosts contained in this packet.
-
setUsedHost
Upon connecting to the stream host the target of the stream replies to the initiator with the JID of the SOCKS5 host that they used.- Parameters:
JID
- The JID of the used host.
-
getUsedHost
Returns the SOCKS5 host connected to by the remote user.- Returns:
- Returns the SOCKS5 host connected to by the remote user.
-
getToActivate
Returns the activate element of the stanza sent to the proxy host to verify the identity of the initiator and match them to the appropriate stream.- Returns:
- Returns the activate element of the stanza sent to the proxy host to verify the identity of the initiator and match them to the appropriate stream.
-
setToActivate
Upon the response from the target of the used host the activate stanza is sent to the SOCKS5 proxy. The proxy will activate the stream or return an error after verifying the identity of the initiator, using the activate packet.- Parameters:
targetID
- The JID of the target of the file transfer.
-
getIQChildElementBuilder
protected IQ.IQChildElementXmlStringBuilder getIQChildElementBuilder(IQ.IQChildElementXmlStringBuilder xml) Description copied from class:IQ
This method must be overwritten by IQ subclasses to create their child content. It is important you don't use the builder to add the final end tag. This will be done automatically byIQ.IQChildElementXmlStringBuilder
after eventual existingExtensionElement
s have been added.For example to create an IQ with a extra attribute and an additional child element
<iq to='foo@example.org' id='123'> <bar xmlns='example:bar' extraAttribute='blaz'> <extraElement>elementText</extraElement> </bar> </iq>
getIQChildElementBuilder
looks like// The builder 'xml' will already have the child element and the 'xmlns' attribute added // So the current builder state is "<bar xmlns='example:bar'" xml.attribute("extraAttribute", "blaz"); xml.rightAngleBracket(); xml.element("extraElement", "elementText"); // Do not close the 'bar' attribute by calling xml.closeElement('bar')
xml.attribute("myAttribute", "myAttributeValue"); xml.setEmptyElement();
If your IQ does not contain any attributes or child elements (besidesExtensionElement
s), consider sub-classingSimpleIQ
instead.- Specified by:
getIQChildElementBuilder
in classIQ
- Parameters:
xml
- a pre-created builder which already has the child element and the 'xmlns' attribute set.- Returns:
- the build to create the IQ child content.
-