X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FConsole%2FtelnetServer.cc;h=95f290ce72039fa30cbc440cfe5f8c5f653a01dd;hb=5746957b0da2bb228b9284e9493158c113b2bbe0;hp=d70a084affb8583047aa943909b92fc02e3380ed;hpb=1f9ac79c1c2dfbb7abe22e1c816ca43d6582102b;p=senf.git diff --git a/Utils/Console/telnetServer.cc b/Utils/Console/telnetServer.cc index d70a084..95f290c 100644 --- a/Utils/Console/telnetServer.cc +++ b/Utils/Console/telnetServer.cc @@ -27,7 +27,9 @@ //#include "telnetServer.ih" // Custom includes +#include #include "Telnet.hh" +#include "../../Scheduler/Scheduler.hh" #include "../Logger.hh" #include "../../Socket/Protocols/INet.hh" @@ -55,34 +57,49 @@ namespace { { SENF_LOG(("Char: " << c)); } + virtual void v_eof() { SENF_LOG(("EOF")); - senf::scheduler::terminate(); + delete this; } - virtual void v_handleTerminalType(std::string const & type) + + virtual void v_setupComplete() { - SENF_LOG(("Terminal type: " << type)); + SENF_LOG(("Terminal type is '" << terminalType() << "', window size is " + << width() << "x" << height())); } - virtual void v_handleWindowSize(unsigned width, unsigned height) + virtual void v_windowSizeChanged() { - SENF_LOG(("Window size: " << width << "x" << height)); + SENF_LOG(("New window size: " << width() << "x" << height())); } }; typedef senf::TCPv4ServerSocketHandle ServerHandle; typedef ServerHandle::ClientHandle ClientHandle; - + + void connect(ServerHandle handle, int events) + { + if (events != senf::scheduler::FdEvent::EV_READ) { + senf::scheduler::terminate(); + return; + } + ClientHandle client (handle.accept()); + SENF_LOG(("new client ...")); + new MyTelnet (client); + } + } int main(int argc, char const ** argv) { - SENF_LOG(("Starting server.")); + senf::log::ConsoleTarget::instance().timeFormat(""); + ServerHandle server (ServerHandle::Address("127.0.0.1:22344")); - ClientHandle client (server.accept()); - SENF_LOG(("Starting MyTelnet")); - MyTelnet telnet (client); + senf::scheduler::FdEvent serverEvent ("telnetServer", boost::bind(&connect, server, _1), + server, senf::scheduler::FdEvent::EV_READ); + SENF_LOG(("Server started at " << server.local())); senf::scheduler::process();