Author: rwinston
Date: Sun Aug 27 09:44:59 2006
New Revision: 437403
URL: http://svn.apache.org/viewvc?rev=437403&view=rev
Log:
Added handler (issue NET-136)
Added:
jakarta/commons/proper/net/branches/JDK_1_5_BRANCH/src/main/java/org/apache/commons/net/telnet/WindowSizeOptionHandler.java
Added:
jakarta/commons/proper/net/branches/JDK_1_5_BRANCH/src/main/java/org/apache/commons/net/telnet/WindowSizeOptionHandler.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/net/branches/JDK_1_5_BRANCH/src/main/java/org/apache/commons/net/telnet/WindowSizeOptionHandler.java?rev=437403&view=auto
==============================================================================
---
jakarta/commons/proper/net/branches/JDK_1_5_BRANCH/src/main/java/org/apache/commons/net/telnet/WindowSizeOptionHandler.java
(added)
+++
jakarta/commons/proper/net/branches/JDK_1_5_BRANCH/src/main/java/org/apache/commons/net/telnet/WindowSizeOptionHandler.java
Sun Aug 27 09:44:59 2006
@@ -0,0 +1,182 @@
+/*
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.net.telnet;
+
+/***
+ * Implements the telnet window size option RFC 1073.
+ * <p>
+ * @author Yuval Kashtan
+ * @version $Id$
+ ***/
+public class WindowSizeOptionHandler extends TelnetOptionHandler
+{
+ /***
+ * Horizontal Size
+ ***/
+ private int m_nWidth = 80;
+
+ /***
+ * Vertical Size
+ ***/
+ private int m_nHeight = 24;
+
+ /***
+ * Window size option
+ ***/
+ protected static final int WINDOW_SIZE = 31;
+
+ /***
+ * Constructor for the WindowSizeOptionHandler. Allows defining desired
+ * initial setting for local/remote activation of this option and
+ * behaviour in case a local/remote activation request for this
+ * option is received.
+ * <p>
+ * @param nWidth - Window width.
+ * @param nHeight - Window Height
+ * @param initlocal - if set to true, a WILL is sent upon connection.
+ * @param initremote - if set to true, a DO is sent upon connection.
+ * @param acceptlocal - if set to true, any DO request is accepted.
+ * @param acceptremote - if set to true, any WILL request is accepted.
+ ***/
+ public WindowSizeOptionHandler(
+ int nWidth,
+ int nHeight,
+ boolean initlocal,
+ boolean initremote,
+ boolean acceptlocal,
+ boolean acceptremote
+ ) {
+ super (
+ TelnetOption.WINDOW_SIZE,
+ initlocal,
+ initremote,
+ acceptlocal,
+ acceptremote
+ );
+
+ m_nWidth = nWidth;
+ m_nHeight = nHeight;
+ }
+
+ /***
+ * Constructor for the WindowSizeOptionHandler. Initial and accept
+ * behaviour flags are set to false
+ * <p>
+ * @param nWidth - Window width.
+ * @param nHeight - Window Height
+ ***/
+ public WindowSizeOptionHandler(
+ int nWidth,
+ int nHeight
+ ) {
+ super (
+ TelnetOption.WINDOW_SIZE,
+ false,
+ false,
+ false,
+ false
+ );
+
+ m_nWidth = nWidth;
+ m_nHeight = nHeight;
+ }
+
+ /***
+ * Implements the abstract method of TelnetOptionHandler.
+ * <p>
+ * @param suboptionData - the sequence received, whithout IAC SB & IAC SE
+ * @param suboptionLength - the length of data in suboption_data
+ * <p>
+ * @return terminal type information
+ ***/
+ public int[] answerSubnegotiation(int suboptionData[], int suboptionLength)
+ {
+ return null;
+ }
+
+ /***
+ * Implements the abstract method of TelnetOptionHandler.
+ * This will send the client Height and Width to the server.
+ * <p>
+ * @return always null (no response to subnegotiation)
+ ***/
+ public int[] startSubnegotiationLocal()
+ {
+ int nCompoundWindowSize = m_nWidth * 0x10000 + m_nHeight;
+ int nResponseSize = 5;
+ int nIndex;
+ int nShift;
+ int nTurnedOnBits;
+
+ if ((m_nWidth % 0x100) == 0xFF) {
+ nResponseSize += 1;
+ }
+
+ if ((m_nWidth / 0x100) == 0xFF) {
+ nResponseSize += 1;
+ }
+
+ if ((m_nHeight % 0x100) == 0xFF) {
+ nResponseSize += 1;
+ }
+
+ if ((m_nHeight / 0x100) == 0xFF) {
+ nResponseSize += 1;
+ }
+
+ //
+ // allocate response array
+ //
+ int response[] = new int[nResponseSize];
+
+ //
+ // Build response array.
+ // ---------------------
+ // 1. put option name.
+ // 2. loop through Window size and fill the values,
+ // 3. duplicate 'ff' if needed.
+ //
+
+ response[0] = WINDOW_SIZE;
// 1 //
+
+ for (
// 2 //
+ nIndex=1, nShift = 24;
+ nIndex < nResponseSize;
+ nIndex++, nShift -=8
+ ) {
+ nTurnedOnBits = 0xFF;
+ nTurnedOnBits <<= nShift;
+ response[nIndex] = ((int)nCompoundWindowSize &
nTurnedOnBits) >>> nShift;
+
+ if (response[nIndex] == 0xff) {
// 3 //
+ nIndex++;
+ response[nIndex] = 0xff;
+ }
+ }
+
+ return response;
+ }
+
+ /***
+ * Implements the abstract method of TelnetOptionHandler.
+ * <p>
+ * @return always null (no response to subnegotiation)
+ ***/
+ public int[] startSubnegotiationRemote()
+ {
+ return null;
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]