Interface ClientChannel

All Superinterfaces:
AttributeRepository, AttributeStore, AutoCloseable, Channel, Channel, ChannelListenerManager, ChannelStreamWriterResolver, ChannelStreamWriterResolverManager, ClientSessionHolder, Closeable, Closeable, PropertyResolver, SessionContextHolder, SessionHolder<Session>, StreamingChannel
All Known Implementing Classes:
AbstractClientChannel, AgentForwardedChannel, ChannelDirectTcpip, ChannelExec, ChannelForwardedX11, ChannelSession, ChannelShell, ChannelSubsystem, DefaultSftpClient.SftpChannelSubsystem, PtyCapableChannelSession, TcpipClientChannel

public interface ClientChannel extends Channel, StreamingChannel, ClientSessionHolder
A client channel used to communicate with the SSH server. Client channels can be shells, simple commands or subsystems. Note: client channels may be associated with a server session if they are opened by the server - e.g., for agent proxy, port forwarding, etc..
  • Method Details

    • getClientSession

      default ClientSession getClientSession()
      Specified by:
      getClientSession in interface ClientSessionHolder
      Returns:
      The underlying ClientSession used
    • getChannelType

      String getChannelType()
      Returns:
      The type of channel reported when it was created
    • getAsyncIn

      IoOutputStream getAsyncIn()
    • getAsyncOut

      IoInputStream getAsyncOut()
    • getAsyncErr

      IoInputStream getAsyncErr()
    • getInvertedIn

      OutputStream getInvertedIn()
      Access to an output stream to send data directly to the remote channel. This can be used instead of using setIn(java.io.InputStream) method and having the channel polling for data in that stream.
      Returns:
      an OutputStream to be used to send data
    • getInvertedOut

      InputStream getInvertedOut()
    • getInvertedErr

      InputStream getInvertedErr()
    • setIn

      void setIn(InputStream in)
      Set an input stream that will be read by this channel and forwarded to the remote channel. Note that using such a stream will create an additional thread for pumping the stream which will only be able to end when that stream is actually closed or some data is read. It is recommended to use the getInvertedIn() method instead and write data directly.
      Parameters:
      in - an InputStream to be polled and forwarded
    • setOut

      void setOut(OutputStream out)
    • setErr

      void setErr(OutputStream err)
    • open

      OpenFuture open() throws IOException
      Throws:
      IOException
    • getChannelState

      Set<ClientChannelEvent> getChannelState()
      Returns:
      A snapshot of the current channel state
      See Also:
    • waitFor

      Set<ClientChannelEvent> waitFor(Collection<ClientChannelEvent> mask, long timeout)
      Waits until any of the specified events in the mask is signaled
      Parameters:
      mask - The ClientChannelEvents mask
      timeout - The timeout to wait (msec.) - if non-positive then forever
      Returns:
      The actual signaled event - includes ClientChannelEvent.TIMEOUT if timeout expired before the expected event was signaled
    • waitFor

      default Set<ClientChannelEvent> waitFor(Collection<ClientChannelEvent> mask, Duration timeout)
      Waits until any of the specified events in the mask is signaled
      Parameters:
      mask - The ClientChannelEvents mask
      timeout - The timeout to wait - if null then forever
      Returns:
      The actual signaled event - includes ClientChannelEvent.TIMEOUT if timeout expired before the expected event was signaled
    • getExitStatus

      Integer getExitStatus()
      Returns:
      The signaled exit status via "exit-status" request - null if not signaled
    • getExitSignal

      String getExitSignal()
      Returns:
      The signaled exit signal via "exit-signal" - null if not signaled
    • validateCommandExitStatusCode

      static void validateCommandExitStatusCode(String command, Integer exitStatus) throws RemoteException
      Makes sure remote command exit status has been provided and it is zero
      Parameters:
      command - The command string - used only for exception text
      exitStatus - The exit status value
      Throws:
      RemoteException - If exitStatus is null or non-zero