summaryrefslogtreecommitdiff
path: root/org/apache/commons/net/telnet/TelnetOptionHandler.java
diff options
context:
space:
mode:
authorJoe Robinson <joe@lc8n.com>2010-10-27 14:21:09 +0100
committerJoe Robinson <joe@lc8n.com>2010-10-27 14:21:09 +0100
commit063284837c8c366e5502b1b0264b8eb807b61732 (patch)
treefff3a1e1e5afaa671485b9d990704658276627ac /org/apache/commons/net/telnet/TelnetOptionHandler.java
Basic upload functionality to predifined location, with basic file browser
Diffstat (limited to 'org/apache/commons/net/telnet/TelnetOptionHandler.java')
-rw-r--r--org/apache/commons/net/telnet/TelnetOptionHandler.java272
1 files changed, 272 insertions, 0 deletions
diff --git a/org/apache/commons/net/telnet/TelnetOptionHandler.java b/org/apache/commons/net/telnet/TelnetOptionHandler.java
new file mode 100644
index 0000000..52486ba
--- /dev/null
+++ b/org/apache/commons/net/telnet/TelnetOptionHandler.java
@@ -0,0 +1,272 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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;
+
+/***
+ * The TelnetOptionHandler class is the base class to be used
+ * for implementing handlers for telnet options.
+ * <p>
+ * TelnetOptionHandler implements basic option handling
+ * functionality and defines abstract methods that must be
+ * implemented to define subnegotiation behaviour.
+ * <p>
+ * @author Bruno D'Avanzo
+ ***/
+public abstract class TelnetOptionHandler
+{
+ /***
+ * Option code
+ ***/
+ private int optionCode = -1;
+
+ /***
+ * true if the option should be activated on the local side
+ ***/
+ private boolean initialLocal = false;
+
+ /***
+ * true if the option should be activated on the remote side
+ ***/
+ private boolean initialRemote = false;
+
+ /***
+ * true if the option should be accepted on the local side
+ ***/
+ private boolean acceptLocal = false;
+
+ /***
+ * true if the option should be accepted on the remote side
+ ***/
+ private boolean acceptRemote = false;
+
+ /***
+ * true if the option is active on the local side
+ ***/
+ private boolean doFlag = false;
+
+ /***
+ * true if the option is active on the remote side
+ ***/
+ private boolean willFlag = false;
+
+ /***
+ * Constructor for the TelnetOptionHandler. 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 optcode - Option code.
+ * @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 TelnetOptionHandler(int optcode,
+ boolean initlocal,
+ boolean initremote,
+ boolean acceptlocal,
+ boolean acceptremote)
+ {
+ optionCode = optcode;
+ initialLocal = initlocal;
+ initialRemote = initremote;
+ acceptLocal = acceptlocal;
+ acceptRemote = acceptremote;
+ }
+
+
+ /***
+ * Returns the option code for this option.
+ * <p>
+ * @return Option code.
+ ***/
+ public int getOptionCode()
+ {
+ return (optionCode);
+ }
+
+ /***
+ * Returns a boolean indicating whether to accept a DO
+ * request coming from the other end.
+ * <p>
+ * @return true if a DO request shall be accepted.
+ ***/
+ public boolean getAcceptLocal()
+ {
+ return (acceptLocal);
+ }
+
+ /***
+ * Returns a boolean indicating whether to accept a WILL
+ * request coming from the other end.
+ * <p>
+ * @return true if a WILL request shall be accepted.
+ ***/
+ public boolean getAcceptRemote()
+ {
+ return (acceptRemote);
+ }
+
+ /***
+ * Set behaviour of the option for DO requests coming from
+ * the other end.
+ * <p>
+ * @param accept - if true, subsequent DO requests will be accepted.
+ ***/
+ public void setAcceptLocal(boolean accept)
+ {
+ acceptLocal = accept;
+ }
+
+ /***
+ * Set behaviour of the option for WILL requests coming from
+ * the other end.
+ * <p>
+ * @param accept - if true, subsequent WILL requests will be accepted.
+ ***/
+ public void setAcceptRemote(boolean accept)
+ {
+ acceptRemote = accept;
+ }
+
+ /***
+ * Returns a boolean indicating whether to send a WILL request
+ * to the other end upon connection.
+ * <p>
+ * @return true if a WILL request shall be sent upon connection.
+ ***/
+ public boolean getInitLocal()
+ {
+ return (initialLocal);
+ }
+
+ /***
+ * Returns a boolean indicating whether to send a DO request
+ * to the other end upon connection.
+ * <p>
+ * @return true if a DO request shall be sent upon connection.
+ ***/
+ public boolean getInitRemote()
+ {
+ return (initialRemote);
+ }
+
+ /***
+ * Tells this option whether to send a WILL request upon connection.
+ * <p>
+ * @param init - if true, a WILL request will be sent upon subsequent
+ * connections.
+ ***/
+ public void setInitLocal(boolean init)
+ {
+ initialLocal = init;
+ }
+
+ /***
+ * Tells this option whether to send a DO request upon connection.
+ * <p>
+ * @param init - if true, a DO request will be sent upon subsequent
+ * connections.
+ ***/
+ public void setInitRemote(boolean init)
+ {
+ initialRemote = init;
+ }
+
+ /***
+ * Method called upon reception of a subnegotiation for this option
+ * coming from the other end.
+ * Must be implemented by the actual TelnetOptionHandler to specify
+ * which response must be sent for the subnegotiation request.
+ * <p>
+ * @param suboptionData - the sequence received, whithout IAC SB & IAC SE
+ * @param suboptionLength - the length of data in suboption_data
+ * <p>
+ * @return response to be sent to the subnegotiation sequence. TelnetClient
+ * will add IAC SB & IAC SE. null means no response
+ ***/
+ public abstract int[] answerSubnegotiation(int suboptionData[],
+ int suboptionLength);
+
+ /***
+ * This method is invoked whenever this option is acknowledged active on
+ * the local end (TelnetClient sent a WILL, remote side sent a DO).
+ * The method is used to specify a subnegotiation sequence that will be
+ * sent by TelnetClient when the option is activated.
+ * <p>
+ * @return subnegotiation sequence to be sent by TelnetClient. TelnetClient
+ * will add IAC SB & IAC SE. null means no subnegotiation.
+ ***/
+ public abstract int[] startSubnegotiationLocal();
+
+ /***
+ * This method is invoked whenever this option is acknowledged active on
+ * the remote end (TelnetClient sent a DO, remote side sent a WILL).
+ * The method is used to specify a subnegotiation sequence that will be
+ * sent by TelnetClient when the option is activated.
+ * <p>
+ * @return subnegotiation sequence to be sent by TelnetClient. TelnetClient
+ * will add IAC SB & IAC SE. null means no subnegotiation.
+ ***/
+ public abstract int[] startSubnegotiationRemote();
+
+ /***
+ * Returns a boolean indicating whether a WILL request sent to the other
+ * side has been acknowledged.
+ * <p>
+ * @return true if a WILL sent to the other side has been acknowledged.
+ ***/
+ boolean getWill()
+ {
+ return willFlag;
+ }
+
+ /***
+ * Tells this option whether a WILL request sent to the other
+ * side has been acknowledged (invoked by TelnetClient).
+ * <p>
+ * @param state - if true, a WILL request has been acknowledged.
+ ***/
+ void setWill(boolean state)
+ {
+ willFlag = state;
+ }
+
+ /***
+ * Returns a boolean indicating whether a DO request sent to the other
+ * side has been acknowledged.
+ * <p>
+ * @return true if a DO sent to the other side has been acknowledged.
+ ***/
+ boolean getDo()
+ {
+ return doFlag;
+ }
+
+
+ /***
+ * Tells this option whether a DO request sent to the other
+ * side has been acknowledged (invoked by TelnetClient).
+ * <p>
+ * @param state - if true, a DO request has been acknowledged.
+ ***/
+ void setDo(boolean state)
+ {
+ doFlag = state;
+ }
+}