switch to new MPL based Fraunhofer FOKUS Public License
[senf.git] / senf / Utils / Termlib / Telnet.hh
index e127a95..8314743 100644 (file)
@@ -1,24 +1,29 @@
 // $Id$
 //
-// Copyright (C) 2008 
+// Copyright (C) 2008
 // Fraunhofer Institute for Open Communication Systems (FOKUS)
-// Competence Center NETwork research (NET), St. Augustin, GERMANY
-//     Stefan Bund <g0dil@berlios.de>
 //
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
+// The contents of this file are subject to the Fraunhofer FOKUS Public License
+// Version 1.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://senf.berlios.de/license.html
 //
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
+// The Fraunhofer FOKUS Public License Version 1.0 is based on, 
+// but modifies the Mozilla Public License Version 1.1.
+// See the full license text for the amendments.
 //
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the
-// Free Software Foundation, Inc.,
-// 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+// Software distributed under the License is distributed on an "AS IS" basis, 
+// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 
+// for the specific language governing rights and limitations under the License.
+//
+// The Original Code is Fraunhofer FOKUS code.
+//
+// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. 
+// (registered association), Hansastraße 27 c, 80686 Munich, Germany.
+// All Rights Reserved.
+//
+// Contributor(s):
+//   Stefan Bund <g0dil@berlios.de>
 
 /** \file
     \brief Telnet public header */
 // Custom includes
 #include <vector>
 #include <map>
-#include <senf/Socket.hh>
 #include <senf/Scheduler/Scheduler.hh>
 #include <senf/Scheduler/ClockService.hh>
 
 //#include "Telnet.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 
 namespace senf {
 namespace term {
@@ -102,7 +106,7 @@ namespace term {
         \c v_handleOptionParameters() member is called.
 
         \code
-        class MyTelnetHandler 
+        class MyTelnetHandler
             : public senf::term::BaseTelnetProtocol::TelnetHandler
         {
         public:
@@ -113,14 +117,14 @@ namespace term {
 
         protected:
             MyTelnetHandler() { registerHandler(this); }
-        
+
         private:
             virtual void v_init()
             {
                 sendOptionParameters(OPTION_CODE, "my special subnegotiation");
                 incrementRequestCounter();
             }
-        
+
             virtual void v_handleOptionParameters(std::string const & data)
             {
                 if (data == "another special subnegotiation")
@@ -139,8 +143,8 @@ namespace term {
         static unsigned const DEFAULT_REQUEST_TIMEOUT_MS = 500u;
 
         typedef ClientSocketHandle<senf::MakeSocketPolicy<
-            ConnectedCommunicationPolicy, 
-            StreamFramingPolicy, 
+            ConnectedCommunicationPolicy,
+            StreamFramingPolicy,
             ReadablePolicy,
             WriteablePolicy>::policy> Handle; ///< Type of socket handle required
 
@@ -165,7 +169,7 @@ namespace term {
         void sendEC();                  ///< Send EraseCharacter to peer
         void sendEL();                  ///< Send EraseLine to peer
         void sendGA();                  ///< Send GoAhead to peer
-        
+
         void sendOptionParameters(option_type option, std::string const & data);
                                         ///< Send extended option parameter to peer
                                         /**< This will send \a data as extended option parameter of
@@ -189,7 +193,7 @@ namespace term {
 
         bool localOption(option_type option); ///< \c true, if \a option locally enabled
         bool peerOption(option_type option); ///< \c true, if \a option enabled in peer
-        
+
     protected:
         explicit BaseTelnetProtocol(Handle handle); ///< Construct telnet protocol handler
         BaseTelnetProtocol();           ///< Provided for TelnetHandler mixins only
@@ -235,7 +239,7 @@ namespace term {
         virtual void v_handleEC();      ///< Called, when the peer sends an EraseCharacter
         virtual void v_handleEL();      ///< Called, when the peer sends an EraseLine
         virtual void v_handleGA();      ///< Called, when the peer sends a GoAhead
-        
+
     private:
         void handleChar(char c);
         void handleNormalChar(char c);
@@ -258,7 +262,7 @@ namespace term {
         void writeHandler(int state);
         void timeout();
 
-        enum Command { 
+        enum Command {
             CMD_NONE = 0,
             CMD_SE = 240,
             CMD_NOP = 241,
@@ -286,7 +290,7 @@ namespace term {
             OptInfo();
             OptInfo(bool local, option_type option);
 
-            ///////////////////////////////////////////////////////////////
+            //-////////////////////////////////////////////////////////////
 
             bool const local;
             option_type const option;
@@ -294,7 +298,7 @@ namespace term {
             WantState wantState;
             OptionState optionState;
             bool enabled;
-            
+
         };
 
         OptInfo & getOption(bool local, option_type option);
@@ -312,7 +316,7 @@ namespace term {
         typedef std::vector<char> SendQueue;
         SendQueue sendQueue_;
 
-        enum CharState { NORMAL, IAC_SEEN, EXPECT_OPTION, CR_SEEN, 
+        enum CharState { NORMAL, IAC_SEEN, EXPECT_OPTION, CR_SEEN,
                          SB_OPTION, SB_DATA, SB_IAC_SEEN };
         CharState charState_;
 
@@ -320,8 +324,8 @@ namespace term {
         option_type option_;
         std::string data_;
 
-        senf::scheduler::FdEvent inputEvent_;
-        senf::scheduler::FdEvent outputEvent_;
+        scheduler::FdEvent inputEvent_;
+        scheduler::FdEvent outputEvent_;
 
         unsigned pendingRequests_;
 
@@ -332,7 +336,7 @@ namespace term {
     };
 
     /** \brief Telnet handler base class
-        
+
         \see BaseTelnetProtocol
      */
     struct BaseTelnetProtocol::TelnetHandler
@@ -348,7 +352,7 @@ namespace term {
 
         See http://www.iana.org/assignments/telnet-options for a list of options
 
-        \ingroup telnet_group 
+        \ingroup telnet_group
      */
     namespace telnetopt { BaseTelnetProtocol::option_type const ECHO = 1u; }
     namespace telnetopt { BaseTelnetProtocol::option_type const TRANSMIT_BINARY = 0u; }
@@ -365,7 +369,7 @@ namespace telnethandler {
     /** \brief Implement TERMINAL_TYPE option
 
         This telnet handler implements the TERMINAL_TYPE option. The handler automatically requests
-        the first terminal type during initialization. Further terminal types may then be reqeusted
+        the first terminal type during initialization. Further terminal types may then be requested
         by calling nextTerminalType().
 
         The last received terminal type will be returned by the terminalType() member.
@@ -383,7 +387,7 @@ namespace telnethandler {
 
         void nextTerminalType();        ///< Request another terminal type
         std::string const & terminalType() const; ///< Return current terminal type
-        
+
     protected:
         TerminalType();
 
@@ -395,18 +399,18 @@ namespace telnethandler {
     };
 
     /** \brief Implement NAWS (Negotiation About Window Size) option
-        
+
         This telnet handler implements the NAWS option. The client terminals window size will be
         requested during initialization. The current window size may always be accessed using the
-        width() and height() members. 
-        
+        width() and height() members.
+
         Whenever the window size is changed, the v_windowSizeChanged() function is called. This
         function must be implemented in a derived class.
 
         \see BaseTelnetProtocol for how to integrate this handler \n
             <a href="http://tools.ietf.org/html/rfc1073">RFC 1073</a> Telnet Window Size Option
      */
-    class NAWS 
+    class NAWS
         : public BaseTelnetProtocol::TelnetHandler
     {
     public:
@@ -417,7 +421,7 @@ namespace telnethandler {
 
     protected:
         NAWS();
-        
+
 #   ifndef DOXYGEN
     private:
 #   endif
@@ -432,12 +436,12 @@ namespace telnethandler {
         unsigned width_;
         unsigned height_;
     };
-    
+
 }
 
 }}
 
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 #include "Telnet.cci"
 
 //#include "Telnet.ct"