Package com.trilead.ssh2.channel
Class ChannelManager
- java.lang.Object
-
- com.trilead.ssh2.channel.ChannelManager
-
- All Implemented Interfaces:
MessageHandler
public class ChannelManager extends java.lang.Object implements MessageHandler
ChannelManager. Please read the comments in Channel.java.Besides the crypto part, this is the core of the library.
- Version:
- $Id: ChannelManager.java,v 1.2 2008/03/03 07:01:36 cplattne Exp $
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Vector
channels
private int
globalFailedCounter
private int
globalSuccessCounter
private java.util.Vector
listenerThreads
private boolean
listenerThreadsAllowed
private static Logger
log
private int
nextLocalChannel
private java.util.HashMap
remoteForwardings
private boolean
shutdown
(package private) TransportManager
tm
private java.util.HashMap
x11_magic_cookies
-
Constructor Summary
Constructors Constructor Description ChannelManager(TransportManager tm)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private int
addChannel(Channel c)
X11ServerData
checkX11Cookie(java.lang.String hexFakeCookie)
void
closeAllChannels()
void
closeChannel(Channel c, java.lang.String reason, boolean force)
int
getAvailable(Channel c, boolean extended)
private Channel
getChannel(int id)
int
getChannelData(Channel c, boolean extended, byte[] target, int off, int len)
void
handleEndMessage(java.lang.Throwable cause)
Called to inform that no more messages will be delivered.void
handleMessage(byte[] msg, int msglen)
Handle message.private java.io.IOException
ioException(java.lang.String msg, Channel c)
void
msgChannelClose(byte[] msg, int msglen)
void
msgChannelData(byte[] msg, int msglen)
void
msgChannelEOF(byte[] msg, int msglen)
void
msgChannelExtendedData(byte[] msg, int msglen)
void
msgChannelFailure(byte[] msg, int msglen)
void
msgChannelOpen(byte[] msg, int msglen)
void
msgChannelOpenConfirmation(byte[] msg, int msglen)
void
msgChannelOpenFailure(byte[] msg, int msglen)
void
msgChannelRequest(byte[] msg, int msglen)
void
msgChannelSuccess(byte[] msg, int msglen)
void
msgChannelWindowAdjust(byte[] msg, int msglen)
void
msgGlobalFailure()
void
msgGlobalRequest(byte[] msg, int msglen)
void
msgGlobalSuccess()
Channel
openDirectTCPIPChannel(java.lang.String host_to_connect, int port_to_connect, java.lang.String originator_IP_address, int originator_port)
Channel
openSessionChannel()
void
registerThread(IChannelWorkerThread thr)
void
registerX11Cookie(java.lang.String hexFakeCookie, X11ServerData data)
private void
removeChannel(int id)
void
requestCancelGlobalForward(int bindPort)
void
requestChannelTrileadPing(Channel c)
void
requestExecCommand(Channel c, java.lang.String cmd)
int
requestGlobalForward(java.lang.String bindAddress, int bindPort, java.lang.String targetAddress, int targetPort)
void
requestGlobalTrileadPing()
void
requestPTY(Channel c, java.lang.String term, int term_width_characters, int term_height_characters, int term_width_pixels, int term_height_pixels, byte[] terminal_modes)
void
requestShell(Channel c)
void
requestSubSystem(Channel c, java.lang.String subSystemName)
void
requestX11(Channel c, boolean singleConnection, java.lang.String x11AuthenticationProtocol, java.lang.String x11AuthenticationCookie, int x11ScreenNumber)
void
sendData(Channel c, byte[] buffer, int pos, int len)
void
sendEOF(Channel c)
void
sendOpenConfirmation(Channel c)
void
unRegisterX11Cookie(java.lang.String hexFakeCookie, boolean killChannels)
private boolean
waitForChannelRequestResult(Channel c)
int
waitForCondition(Channel c, long timeout, int condition_mask)
Wait until for a condition.private boolean
waitForGlobalRequestResult()
private void
waitUntilChannelOpen(Channel c)
-
-
-
Field Detail
-
log
private static final Logger log
-
x11_magic_cookies
private java.util.HashMap x11_magic_cookies
-
tm
TransportManager tm
-
channels
private java.util.Vector channels
-
nextLocalChannel
private int nextLocalChannel
-
shutdown
private boolean shutdown
-
globalSuccessCounter
private int globalSuccessCounter
-
globalFailedCounter
private int globalFailedCounter
-
remoteForwardings
private java.util.HashMap remoteForwardings
-
listenerThreads
private java.util.Vector listenerThreads
-
listenerThreadsAllowed
private boolean listenerThreadsAllowed
-
-
Constructor Detail
-
ChannelManager
public ChannelManager(TransportManager tm)
-
-
Method Detail
-
getChannel
private Channel getChannel(int id)
-
removeChannel
private void removeChannel(int id)
-
addChannel
private int addChannel(Channel c)
-
waitUntilChannelOpen
private void waitUntilChannelOpen(Channel c) throws java.io.IOException
- Throws:
java.io.IOException
-
waitForGlobalRequestResult
private final boolean waitForGlobalRequestResult() throws java.io.IOException
- Throws:
java.io.IOException
-
waitForChannelRequestResult
private final boolean waitForChannelRequestResult(Channel c) throws java.io.IOException
- Throws:
java.io.IOException
-
registerX11Cookie
public void registerX11Cookie(java.lang.String hexFakeCookie, X11ServerData data)
-
unRegisterX11Cookie
public void unRegisterX11Cookie(java.lang.String hexFakeCookie, boolean killChannels)
-
checkX11Cookie
public X11ServerData checkX11Cookie(java.lang.String hexFakeCookie)
-
closeAllChannels
public void closeAllChannels()
-
closeChannel
public void closeChannel(Channel c, java.lang.String reason, boolean force) throws java.io.IOException
- Throws:
java.io.IOException
-
sendEOF
public void sendEOF(Channel c) throws java.io.IOException
- Throws:
java.io.IOException
-
sendOpenConfirmation
public void sendOpenConfirmation(Channel c) throws java.io.IOException
- Throws:
java.io.IOException
-
sendData
public void sendData(Channel c, byte[] buffer, int pos, int len) throws java.io.IOException
- Throws:
java.io.IOException
-
requestGlobalForward
public int requestGlobalForward(java.lang.String bindAddress, int bindPort, java.lang.String targetAddress, int targetPort) throws java.io.IOException
- Throws:
java.io.IOException
-
requestCancelGlobalForward
public void requestCancelGlobalForward(int bindPort) throws java.io.IOException
- Throws:
java.io.IOException
-
registerThread
public void registerThread(IChannelWorkerThread thr) throws java.io.IOException
- Throws:
java.io.IOException
-
openDirectTCPIPChannel
public Channel openDirectTCPIPChannel(java.lang.String host_to_connect, int port_to_connect, java.lang.String originator_IP_address, int originator_port) throws java.io.IOException
- Throws:
java.io.IOException
-
openSessionChannel
public Channel openSessionChannel() throws java.io.IOException
- Throws:
java.io.IOException
-
requestGlobalTrileadPing
public void requestGlobalTrileadPing() throws java.io.IOException
- Throws:
java.io.IOException
-
requestChannelTrileadPing
public void requestChannelTrileadPing(Channel c) throws java.io.IOException
- Throws:
java.io.IOException
-
requestPTY
public void requestPTY(Channel c, java.lang.String term, int term_width_characters, int term_height_characters, int term_width_pixels, int term_height_pixels, byte[] terminal_modes) throws java.io.IOException
- Throws:
java.io.IOException
-
requestX11
public void requestX11(Channel c, boolean singleConnection, java.lang.String x11AuthenticationProtocol, java.lang.String x11AuthenticationCookie, int x11ScreenNumber) throws java.io.IOException
- Throws:
java.io.IOException
-
requestSubSystem
public void requestSubSystem(Channel c, java.lang.String subSystemName) throws java.io.IOException
- Throws:
java.io.IOException
-
requestExecCommand
public void requestExecCommand(Channel c, java.lang.String cmd) throws java.io.IOException
- Throws:
java.io.IOException
-
requestShell
public void requestShell(Channel c) throws java.io.IOException
- Throws:
java.io.IOException
-
msgChannelExtendedData
public void msgChannelExtendedData(byte[] msg, int msglen) throws java.io.IOException
- Throws:
java.io.IOException
-
waitForCondition
public int waitForCondition(Channel c, long timeout, int condition_mask) throws java.lang.InterruptedException
Wait until for a condition.- Parameters:
c
- Channeltimeout
- in ms, 0 means no timeout.condition_mask
- minimum event mask- Returns:
- all current events
- Throws:
java.lang.InterruptedException
- the interrupted exception
-
getAvailable
public int getAvailable(Channel c, boolean extended) throws java.io.IOException
- Throws:
java.io.IOException
-
getChannelData
public int getChannelData(Channel c, boolean extended, byte[] target, int off, int len) throws java.io.IOException
- Throws:
java.io.IOException
-
msgChannelData
public void msgChannelData(byte[] msg, int msglen) throws java.io.IOException
- Throws:
java.io.IOException
-
msgChannelWindowAdjust
public void msgChannelWindowAdjust(byte[] msg, int msglen) throws java.io.IOException
- Throws:
java.io.IOException
-
msgChannelOpen
public void msgChannelOpen(byte[] msg, int msglen) throws java.io.IOException
- Throws:
java.io.IOException
-
msgChannelRequest
public void msgChannelRequest(byte[] msg, int msglen) throws java.io.IOException
- Throws:
java.io.IOException
-
msgChannelEOF
public void msgChannelEOF(byte[] msg, int msglen) throws java.io.IOException
- Throws:
java.io.IOException
-
msgChannelClose
public void msgChannelClose(byte[] msg, int msglen) throws java.io.IOException
- Throws:
java.io.IOException
-
msgChannelSuccess
public void msgChannelSuccess(byte[] msg, int msglen) throws java.io.IOException
- Throws:
java.io.IOException
-
msgChannelFailure
public void msgChannelFailure(byte[] msg, int msglen) throws java.io.IOException
- Throws:
java.io.IOException
-
msgChannelOpenConfirmation
public void msgChannelOpenConfirmation(byte[] msg, int msglen) throws java.io.IOException
- Throws:
java.io.IOException
-
msgChannelOpenFailure
public void msgChannelOpenFailure(byte[] msg, int msglen) throws java.io.IOException
- Throws:
java.io.IOException
-
msgGlobalRequest
public void msgGlobalRequest(byte[] msg, int msglen) throws java.io.IOException
- Throws:
java.io.IOException
-
msgGlobalSuccess
public void msgGlobalSuccess() throws java.io.IOException
- Throws:
java.io.IOException
-
msgGlobalFailure
public void msgGlobalFailure() throws java.io.IOException
- Throws:
java.io.IOException
-
handleMessage
public void handleMessage(byte[] msg, int msglen) throws java.io.IOException
Description copied from interface:MessageHandler
Handle message.- Specified by:
handleMessage
in interfaceMessageHandler
- Parameters:
msg
- the msgmsglen
- the msglen- Throws:
java.io.IOException
- the io exception
-
handleEndMessage
public void handleEndMessage(java.lang.Throwable cause) throws java.io.IOException
Description copied from interface:MessageHandler
Called to inform that no more messages will be delivered.- Specified by:
handleEndMessage
in interfaceMessageHandler
- Parameters:
cause
- For diagnosis, the reason that caused the transport to close down.- Throws:
java.io.IOException
- the io exception
-
ioException
private java.io.IOException ioException(java.lang.String msg, Channel c)
-
-