Class InBandBytestreamSession

java.lang.Object
org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamSession
All Implemented Interfaces:
BytestreamSession

public class InBandBytestreamSession extends Object implements BytestreamSession
InBandBytestreamSession class represents an In-Band Bytestream session.

In-band bytestreams are bidirectional and this session encapsulates the streams for both directions.

Note that closing the In-Band Bytestream session will close both streams. If both streams are closed individually the session will be closed automatically once the second stream is closed. Use the setCloseBothStreamsEnabled(boolean) method if both streams should be closed automatically if one of them is closed.

  • Constructor Details

    • InBandBytestreamSession

      protected InBandBytestreamSession(XMPPConnection connection, Open byteStreamRequest, Jid remoteJID)
      Constructor.
      Parameters:
      connection - the XMPP connection
      byteStreamRequest - the In-Band Bytestream open request for this session
      remoteJID - JID of the remote peer
  • Method Details

    • getInputStream

      Description copied from interface: BytestreamSession
      Returns the InputStream associated with this session to send data.
      Specified by:
      getInputStream in interface BytestreamSession
      Returns:
      the InputStream associated with this session to send data
    • getOutputStream

      Description copied from interface: BytestreamSession
      Returns the OutputStream associated with this session to receive data.
      Specified by:
      getOutputStream in interface BytestreamSession
      Returns:
      the OutputStream associated with this session to receive data
    • getReadTimeout

      public int getReadTimeout()
      Description copied from interface: BytestreamSession
      Returns the timeout for read operations of the input stream associated with this session. 0 returns implies that the option is disabled (i.e., timeout of infinity). Default is 0.
      Specified by:
      getReadTimeout in interface BytestreamSession
      Returns:
      the timeout for read operations
    • setReadTimeout

      public void setReadTimeout(int timeout)
      Description copied from interface: BytestreamSession
      Sets the specified timeout, in milliseconds. With this option set to a non-zero timeout, a read() call on the input stream associated with this session will block for only this amount of time. If the timeout expires, a java.net.SocketTimeoutException is raised, though the session is still valid. The option must be enabled prior to entering the blocking operation to have effect. The timeout must be > 0. A timeout of zero is interpreted as an infinite timeout. Default is 0.
      Specified by:
      setReadTimeout in interface BytestreamSession
      Parameters:
      timeout - the specified timeout, in milliseconds
    • isCloseBothStreamsEnabled

      public boolean isCloseBothStreamsEnabled()
      Returns whether both streams should be closed automatically if one of the streams is closed. Default is false.
      Returns:
      true if both streams will be closed if one of the streams is closed, false if both streams can be closed independently.
    • setCloseBothStreamsEnabled

      public void setCloseBothStreamsEnabled(boolean closeBothStreamsEnabled)
      Sets whether both streams should be closed automatically if one of the streams is closed. Default is false.
      Parameters:
      closeBothStreamsEnabled - true if both streams should be closed if one of the streams is closed, false if both streams should be closed independently
    • close

      public void close() throws IOException
      Description copied from interface: BytestreamSession
      Closes the bytestream session.

      Closing the session will also close the input stream and the output stream associated to this session.

      Specified by:
      close in interface BytestreamSession
      Throws:
      IOException - if an error occurs while closing the session
    • closeByPeer

      This method is invoked if a request to close the In-Band Bytestream has been received.
      Parameters:
      closeRequest - the close request from the remote peer
      Throws:
      SmackException.NotConnectedException - if the XMPP connection is not connected.
      InterruptedException - if the calling thread was interrupted.
    • closeByLocal

      protected void closeByLocal(boolean in) throws IOException
      This method is invoked if one of the streams has been closed locally, if an error occurred locally or if the whole session should be closed.
      Parameters:
      in - do we want to close the Input- or OutputStream?
      Throws:
      IOException - if an error occurs while sending the close request
    • processIQPacket

      Process IQ stanza.
      Parameters:
      data - TODO javadoc me please
      Throws:
      SmackException.NotConnectedException - if the XMPP connection is not connected.
      InterruptedException - if the calling thread was interrupted.
      SmackException.NotLoggedInException - if the XMPP connection is not authenticated.