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]

Reply via email to