X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FTermlib%2FTelnet.cc;h=a0d706570ed51059fc8acbb8d1c0f94f81dd0616;hb=f08685d9795a3be20ce5c7a337087358ccd77eb5;hp=df86304d57f3b97f8491393eb4470e754825a021;hpb=26610f603ebdd465307b9621f532c1fe19fd5571;p=senf.git diff --git a/senf/Utils/Termlib/Telnet.cc b/senf/Utils/Termlib/Telnet.cc index df86304..a0d7065 100644 --- a/senf/Utils/Termlib/Telnet.cc +++ b/senf/Utils/Termlib/Telnet.cc @@ -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 // -// 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 /** \file \brief Telnet non-inline non-template implementation */ @@ -33,20 +38,20 @@ //#include "Telnet.mpp" #define prefix_ -///////////////////////////////cc.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// prefix_ senf::term::BaseTelnetProtocol::BaseTelnetProtocol(Handle handle) : handle_ (handle), charState_ (NORMAL), command_ (CMD_NONE), option_ (0), inputEvent_ ("senf::term::BaseTelnetProtocol::input", - senf::membind(&BaseTelnetProtocol::readHandler, this), handle, - senf::scheduler::FdEvent::EV_READ), + membind(&BaseTelnetProtocol::readHandler, this), handle, + scheduler::FdEvent::EV_READ), outputEvent_ ("senf::term::BaseTelnetProtocol::output", - senf::membind(&BaseTelnetProtocol::writeHandler, this), handle, - senf::scheduler::FdEvent::EV_WRITE, false), + membind(&BaseTelnetProtocol::writeHandler, this), handle, + scheduler::FdEvent::EV_WRITE, false), pendingRequests_ (0u), requestTimeout_ (ClockService::milliseconds(DEFAULT_REQUEST_TIMEOUT_MS)), timeout_ ("senf::term::BaseTelnetProtocol::configTimeout", - senf::membind(&BaseTelnetProtocol::timeout, this)) + membind(&BaseTelnetProtocol::timeout, this)) {} prefix_ senf::term::BaseTelnetProtocol::BaseTelnetProtocol() @@ -57,7 +62,10 @@ prefix_ senf::term::BaseTelnetProtocol::BaseTelnetProtocol() requestTimeout_ (ClockService::milliseconds(DEFAULT_REQUEST_TIMEOUT_MS)), timeout_ ("senf::term::BaseTelnetProtocol::timeout", 0) { - SENF_ASSERT( false ); + SENF_ASSERT( false, + "Missing BaseTelnetProtocol constructor call in derived class " + "(BaseTelnetProtocol is a VIRTUAL base and MUST be constructed explicitly " + "in the most derived class." ); } prefix_ void senf::term::BaseTelnetProtocol::write(std::string const & s) @@ -173,7 +181,7 @@ prefix_ void senf::term::BaseTelnetProtocol::handleNormalChar(char c) prefix_ void senf::term::BaseTelnetProtocol::handleCommand(char c) { - switch (c) { + switch (static_cast(c)) { case CMD_SE: // Ignore spurious SE commands .. they should only occur while in subnegotiation mode charState_ = NORMAL; @@ -212,7 +220,7 @@ prefix_ void senf::term::BaseTelnetProtocol::handleCommand(char c) handleChar(c); break; } -} +} prefix_ void senf::term::BaseTelnetProtocol::handleOption(char c) { @@ -257,7 +265,7 @@ prefix_ void senf::term::BaseTelnetProtocol::handleSBData(char c) prefix_ void senf::term::BaseTelnetProtocol::handleSBIAC(char c) { - switch (c) { + switch (static_cast(c)) { case CMD_IAC: data_.push_back(c); charState_ = SB_DATA; @@ -331,7 +339,7 @@ prefix_ void senf::term::BaseTelnetProtocol::transmit(char c) prefix_ void senf::term::BaseTelnetProtocol::readHandler(int state) { - if (state != senf::scheduler::FdEvent::EV_READ || handle_.eof()) { + if (state != scheduler::FdEvent::EV_READ || handle_.eof()) { inputEvent_.disable(); v_eof(); return; @@ -343,14 +351,14 @@ prefix_ void senf::term::BaseTelnetProtocol::readHandler(int state) } prefix_ void senf::term::BaseTelnetProtocol::writeHandler(int state) -{ - if (state != senf::scheduler::FdEvent::EV_WRITE) { +{ + if (state != scheduler::FdEvent::EV_WRITE) { outputEvent_.disable(); inputEvent_.disable(); v_eof(); return; } - sendQueue_.erase(sendQueue_.begin(), + sendQueue_.erase(sendQueue_.begin(), handle_.write(boost::make_iterator_range( sendQueue_.begin(), sendQueue_.end()))); if (sendQueue_.empty()) @@ -403,7 +411,7 @@ prefix_ void senf::term::BaseTelnetProtocol::response(OptInfo & info, bool enabl } else if (enabled != info.enabled) { // Request to change the current state - if (!enabled || + if (!enabled || (enabled && (info.wantState == OptInfo::WANTED || info.wantState == OptInfo::ACCEPTED))) { // accept the request info.optionState = OptInfo::ACKNOWLEDGED; @@ -437,7 +445,7 @@ prefix_ void senf::term::BaseTelnetProtocol::decrementRequestCounter() } } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::term::telnethandler::TerminalType prefix_ senf::term::telnethandler::TerminalType::TerminalType() @@ -468,7 +476,7 @@ prefix_ void senf::term::telnethandler::TerminalType::v_init() incrementRequestCounter(); } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::term::telnethandler::NAWS prefix_ senf::term::telnethandler::NAWS::NAWS() @@ -494,7 +502,7 @@ senf::term::telnethandler::NAWS::v_handleOptionParameters(std::string const & da decrementRequestCounter(); } -///////////////////////////////cc.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_ //#include "Telnet.mpp"