148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood/*
248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Copyright (c) 2006-2011 Christian Plattner. All rights reserved.
348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Please refer to the LICENSE.txt for licensing details.
448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood */
548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodpackage ch.ethz.ssh2;
648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood/**
848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Contains constants that can be used to specify what conditions to wait for on
948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * a SSH-2 channel (e.g., represented by a {@link Session}).
1048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood *
1148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @see Session#waitForCondition(int, long)
1248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood *
1348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @author Christian Plattner
1448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @version 2.50, 03/15/10
1548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood */
1648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
1748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodpublic abstract interface ChannelCondition
1848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood{
1948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	/**
2048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * A timeout has occurred, none of your requested conditions is fulfilled.
2148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * However, other conditions may be true - therefore, NEVER use the "=="
2248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * operator to test for this (or any other) condition. Always use
2348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * something like <code>((cond & ChannelCondition.CLOSED) != 0)</code>.
2448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 */
2548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public static final int TIMEOUT = 1;
2648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
2748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	/**
2848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * The underlying SSH-2 channel, however not necessarily the whole connection,
2948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * has been closed. This implies <code>EOF</code>. Note that there may still
3048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * be unread stdout or stderr data in the local window, i.e, <code>STDOUT_DATA</code>
3148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * or/and <code>STDERR_DATA</code> may be set at the same time.
3248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 */
3348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public static final int CLOSED = 2;
3448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
3548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	/**
3648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * There is stdout data available that is ready to be consumed.
3748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 */
3848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public static final int STDOUT_DATA = 4;
3948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
4048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	/**
4148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * There is stderr data available that is ready to be consumed.
4248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 */
4348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public static final int STDERR_DATA = 8;
4448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
4548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	/**
4648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * EOF on has been reached, no more _new_ stdout or stderr data will arrive
4748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * from the remote server. However, there may be unread stdout or stderr
4848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * data, i.e, <code>STDOUT_DATA</code> or/and <code>STDERR_DATA</code>
4948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * may be set at the same time.
5048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 */
5148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public static final int EOF = 16;
5248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
5348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	/**
5448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * The exit status of the remote process is available.
5548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * Some servers never send the exist status, or occasionally "forget" to do so.
5648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 */
5748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public static final int EXIT_STATUS = 32;
5848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
5948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	/**
6048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * The exit signal of the remote process is available.
6148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 */
6248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public static final int EXIT_SIGNAL = 64;
6348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
6448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood}
65