X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FConsole%2FServer.cc;h=58a3dcc0fd9ce5e7668ec9cf2069dc23962ea1e5;hb=731a143df4de38d4c8b0a81121990951971cd858;hp=719f527b4fea6f1c9cec588e18cad1f8f18d0c84;hpb=6745b9a3712f3221fe4b076ed7abb1ab92d6ac2b;p=senf.git diff --git a/Utils/Console/Server.cc b/Utils/Console/Server.cc index 719f527..58a3dcc 100644 --- a/Utils/Console/Server.cc +++ b/Utils/Console/Server.cc @@ -106,12 +106,12 @@ prefix_ void senf::console::Server::newClient(int event) ServerHandle::ClientHandle client (handle_.accept()); boost::intrusive_ptr p (new Client(*this, client)); clients_.insert( p ); - SENF_LOG(( "Registered new client " << p.get() )); + SENF_LOG(( "Registered new client " << client.peer() )); } prefix_ void senf::console::Server::removeClient(Client & client) { - SENF_LOG(( "Disposing client " << & client )); + SENF_LOG(( "Disposing client " << client.handle().peer() )); // THIS DELETES THE CLIENT INSTANCE !! clients_.erase(boost::intrusive_ptr(&client)); } @@ -180,6 +180,12 @@ prefix_ void senf::console::detail::DumbClientReader::v_write(std::string const handle().write(data); } +prefix_ unsigned senf::console::detail::DumbClientReader::v_width() + const +{ + return 80; +} + /////////////////////////////////////////////////////////////////////////// // senf::console::detail::NoninteractiveClientReader @@ -202,6 +208,12 @@ prefix_ void senf::console::detail::NoninteractiveClientReader::v_write(std::str handle().write(data); } +prefix_ unsigned senf::console::detail::NoninteractiveClientReader::v_width() + const +{ + return 80; +} + prefix_ void senf::console::detail::NoninteractiveClientReader::newData(int event) { @@ -224,8 +236,9 @@ senf::console::detail::NoninteractiveClientReader::newData(int event) // senf::console::Client prefix_ senf::console::Client::Client(Server & server, ClientHandle handle) - : out_t(boost::ref(*this)), senf::log::IOStreamTarget(out_t::member), server_ (server), - handle_ (handle), + : out_t(boost::ref(*this)), + senf::log::IOStreamTarget("client-" + senf::str(handle.peer()), out_t::member), + server_ (server), handle_ (handle), readevent_ ("senf::console::Client::interactive_check", boost::bind(&Client::setNoninteractive,this), handle, scheduler::FdEvent::EV_READ, false), @@ -271,9 +284,10 @@ prefix_ void senf::console::Client::setNoninteractive() prefix_ std::string::size_type senf::console::Client::handleInput(std::string data, bool incremental) { - if (data.empty() && ! incremental) + if (data.empty() && ! incremental) { data = lastCommand_; - else + stream() << "repeat: " << data << std::endl; + } else lastCommand_ = data; std::string::size_type n (data.size()); @@ -322,33 +336,6 @@ prefix_ void senf::console::Client::v_write(senf::log::time_type timestamp, reader_->enablePrompt(); } -prefix_ std::ostream & senf::console::operator<<(std::ostream & os, Client const & client) -{ - typedef ClientSocketHandle< MakeSocketPolicy< - INet4AddressingPolicy,ConnectedCommunicationPolicy>::policy > V4Socket; - typedef ClientSocketHandle< MakeSocketPolicy< - INet6AddressingPolicy,ConnectedCommunicationPolicy>::policy > V6Socket; - - try { - if (check_socket_cast(client.handle())) - os << dynamic_socket_cast(client.handle()).peer(); - else if (check_socket_cast(client.handle())) - os << dynamic_socket_cast(client.handle()).peer(); - else - os << static_cast(&client); - } - catch (SystemException &) { - os << "0.0.0.0:0"; - } - - return os; -} - -prefix_ std::ostream & senf::console::operator<<(std::ostream & os, Client * client) -{ - return os << *client; -} - /////////////////////////////////////////////////////////////////////////// // senf::console::Client::SysBacktrace @@ -362,7 +349,7 @@ prefix_ void senf::console::Client::SysBacktrace::backtrace(std::ostream & os) { Client & client (Client::get(os)); if (client.backtrace().empty()) - os << "(no backtrace)"; + os << "(no backtrace)\n"; else os << client.backtrace(); }