X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FTermlib%2FTelnetTerminal.cc;h=6b28a4f466be0164dd046ec13d3c0e81704b3ad6;hb=844c117cb04bc73a5b920c2c49efbf14515da3e2;hp=1c244ba3f705d5d7f09bdfe56994aad8f0b5f153;hpb=45f1f7608c81c1d5e417c97a3e9273e0282d6a0d;p=senf.git diff --git a/Utils/Termlib/TelnetTerminal.cc b/Utils/Termlib/TelnetTerminal.cc index 1c244ba..6b28a4f 100644 --- a/Utils/Termlib/TelnetTerminal.cc +++ b/Utils/Termlib/TelnetTerminal.cc @@ -27,55 +27,56 @@ //#include "TelnetTerminal.ih" // Custom includes -#include //#include "TelnetTerminal.mpp" #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// prefix_ senf::term::TelnetTerminal::TelnetTerminal() - : keyTimeout_ (senf::ClockService::milliseconds(DEFAULT_KEY_TIMEOUT_MS)), - timer_ ("senf::term::TelnetTerminal::keySequenceTimeout", - senf::membind(&TelnetTerminal::keySequenceTimeout, this)) { requestPeerOption(telnetopt::SUPPRESS_GO_AHEAD); requestLocalOption(telnetopt::SUPPRESS_GO_AHEAD); requestLocalOption(telnetopt::ECHO); } -prefix_ void senf::term::TelnetTerminal::v_setupComplete() +prefix_ void senf::term::TelnetTerminal::setCallbacks(AbstractTerminal::Callbacks & cb) +{ + callbacks_ = &cb; +} + +prefix_ std::string senf::term::TelnetTerminal::terminalType() +{ + return telnethandler::TerminalType::terminalType(); +} + +prefix_ unsigned senf::term::TelnetTerminal::width() { - tifo_.load(terminalType()); - keyParser_.load(tifo_); + return telnethandler::NAWS::width(); } -prefix_ void senf::term::TelnetTerminal::v_charReceived(char c) +prefix_ unsigned senf::term::TelnetTerminal::height() +{ + return telnethandler::NAWS::height(); +} + +prefix_ void senf::term::TelnetTerminal::write(char ch) +{ + BaseTelnetProtocol::write(ch); +} + +prefix_ void senf::term::TelnetTerminal::v_setupComplete() { - inputBuffer_ += c; - timer_.timeout(senf::scheduler::eventTime() + keyTimeout_); - processKeys(); + callbacks_->cb_init(); } -prefix_ void senf::term::TelnetTerminal::keySequenceTimeout() +prefix_ void senf::term::TelnetTerminal::v_charReceived(char ch) { - while (!inputBuffer_.empty()) { - processKeys(); - v_keyReceived(keycode_t(inputBuffer_[0])); - inputBuffer_.erase(0, 1); - } + callbacks_->cb_charReceived(ch); } -prefix_ void senf::term::TelnetTerminal::processKeys() +prefix_ void senf::term::TelnetTerminal::v_windowSizeChanged() { - do { - std::pair result - (keyParser_.lookup(inputBuffer_)); - if (result.first == senf::term::KeyParser::Incomplete) - return; - v_keyReceived(result.first); - inputBuffer_.erase(0, result.second); - } while (! inputBuffer_.empty()); - timer_.disable(); + callbacks_->cb_windowSizeChanged(); } ///////////////////////////////cc.e////////////////////////////////////////