KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > net > telnet > TerminalTypeOptionHandler


1 /*
2  * Copyright 2003-2004 The Apache Software Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.commons.net.telnet;
17
18 /***
19  * Implements the telnet terminal type option RFC 1091.
20  * <p>
21  * @author Bruno D'Avanzo
22  ***/

23 public class TerminalTypeOptionHandler extends TelnetOptionHandler
24 {
25     /***
26      * Terminal type
27      ***/

28     private String JavaDoc termType = null;
29
30     /***
31      * Terminal type option
32      ***/

33     protected static final int TERMINAL_TYPE = 24;
34
35     /***
36      * Send (for subnegotiation)
37      ***/

38     protected static final int TERMINAL_TYPE_SEND = 1;
39
40     /***
41      * Is (for subnegotiation)
42      ***/

43     protected static final int TERMINAL_TYPE_IS = 0;
44
45     /***
46      * Constructor for the TerminalTypeOptionHandler. Allows defining desired
47      * initial setting for local/remote activation of this option and
48      * behaviour in case a local/remote activation request for this
49      * option is received.
50      * <p>
51      * @param termtype - terminal type that will be negotiated.
52      * @param initlocal - if set to true, a WILL is sent upon connection.
53      * @param initremote - if set to true, a DO is sent upon connection.
54      * @param acceptlocal - if set to true, any DO request is accepted.
55      * @param acceptremote - if set to true, any WILL request is accepted.
56      ***/

57     public TerminalTypeOptionHandler(String JavaDoc termtype,
58                                 boolean initlocal,
59                                 boolean initremote,
60                                 boolean acceptlocal,
61                                 boolean acceptremote)
62     {
63         super(TelnetOption.TERMINAL_TYPE, initlocal, initremote,
64                                       acceptlocal, acceptremote);
65         termType = termtype;
66     }
67
68     /***
69      * Constructor for the TerminalTypeOptionHandler. Initial and accept
70      * behaviour flags are set to false
71      * <p>
72      * @param termtype - terminal type that will be negotiated.
73      ***/

74     public TerminalTypeOptionHandler(String JavaDoc termtype)
75     {
76         super(TelnetOption.TERMINAL_TYPE, false, false, false, false);
77         termType = termtype;
78     }
79
80     /***
81      * Implements the abstract method of TelnetOptionHandler.
82      * <p>
83      * @param suboptionData - the sequence received, whithout IAC SB & IAC SE
84      * @param suboptionLength - the length of data in suboption_data
85      * <p>
86      * @return terminal type information
87      ***/

88     public int[] answerSubnegotiation(int suboptionData[], int suboptionLength)
89     {
90         if ((suboptionData != null) && (suboptionLength > 1)
91             && (termType != null))
92         {
93             if ((suboptionData[0] == TERMINAL_TYPE)
94                 && (suboptionData[1] == TERMINAL_TYPE_SEND))
95             {
96                 int response[] = new int[termType.length() + 2];
97
98                 response[0] = TERMINAL_TYPE;
99                 response[1] = TERMINAL_TYPE_IS;
100
101                 for (int ii = 0; ii < termType.length(); ii++)
102                 {
103                     response[ii + 2] = (int) termType.charAt(ii);
104                 }
105
106                 return response;
107             }
108         }
109         return null;
110     }
111
112     /***
113      * Implements the abstract method of TelnetOptionHandler.
114      * <p>
115      * @return always null (no response to subnegotiation)
116      ***/

117     public int[] startSubnegotiationLocal()
118     {
119         return null;
120     }
121
122     /***
123      * Implements the abstract method of TelnetOptionHandler.
124      * <p>
125      * @return always null (no response to subnegotiation)
126      ***/

127     public int[] startSubnegotiationRemote()
128     {
129         return null;
130     }
131 }
132
Popular Tags