// $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>
#include <boost/iostreams/device/file_descriptor.hpp>
#include <boost/iostreams/stream.hpp>
#include <boost/bind.hpp>
-#include "../../Utils/senfassert.hh"
-#include "../../Utils/membind.hh"
-#include "../../Utils/Logger/SenfLog.hh"
+#include <senf/Utils/senfassert.hh>
+#include <senf/Utils/membind.hh>
+#include <senf/Utils/Logger/SenfLog.hh>
+#include <senf/Version.hh>
#include "LineEditor.hh"
#include "ScopedDirectory.hh"
#include "Sysdir.hh"
+#include "SysInfo.hh"
#include "ParsedCommand.hh"
//#include "Server.mpp"
#define prefix_
///////////////////////////////cc.p////////////////////////////////////////
+namespace {
+ senf::console::SysInfo::Proxy addSysInfo (
+ "SENF: The Simple and Extensible Network Framework\n"
+ " © 2006-2010 Fraunhofer Institute for Open Communication Systems, Network Research\n"
+ " Contact: senf-dev@lists.berlios.de\n"
+ " Version: " SENF_LIB_VERSION " Revision number: " SENF_REVISION "\n", 0);
+}
///////////////////////////////////////////////////////////////////////////
// senf::console::detail::NonBlockingSocketSink
{
senf::TCPv4ServerSocketHandle handle (address);
Server & server (senf::console::Server::start(handle));
- SENF_LOG((Server::SENFLogArea)(log::NOTICE)(
+ SENF_LOG((Server::SENFLogArea)(log::NOTICE)(
"Console server started at " << address ));
return server;
}
{
senf::TCPv6ServerSocketHandle handle (address);
Server & server (senf::console::Server::start(handle));
- SENF_LOG((Server::SENFLogArea)(log::NOTICE)(
+ SENF_LOG((Server::SENFLogArea)(log::NOTICE)(
"Console server started at " << address ));
return server;
}
}
prefix_ senf::console::Server::Server(ServerHandle handle)
- : handle_ (handle),
+ : handle_ (handle),
event_ ("senf::console::Server", senf::membind(&Server::newClient, this),
handle_, scheduler::FdEvent::EV_READ),
root_ (senf::console::root().thisptr()), mode_ (Automatic),
stopClient();
return;
}
-
+
promptLen_ = 0;
promptActive_ = false;
prefix_
senf::console::detail::NoninteractiveClientReader::NoninteractiveClientReader(Client & client)
- : ClientReader (client),
- readevent_ ("senf::console::detail::NoninteractiveClientReader",
+ : ClientReader (client),
+ readevent_ ("senf::console::detail::NoninteractiveClientReader",
senf::membind(&NoninteractiveClientReader::newData, this),
handle(), senf::scheduler::FdEvent::EV_READ)
{}
// senf::console::Client
prefix_ senf::console::Client::Client(Server & server, ClientHandle 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),
+ : 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),
- timer_ ("senf::console::Client::interactive_timer",
+ timer_ ("senf::console::Client::interactive_timer",
boost::bind(&Client::setInteractive, this),
scheduler::eventTime() + ClockService::milliseconds(INTERACTIVE_TIMEOUT),
false),
if (i != std::string::npos) {
backtrace_ = msg.substr(0,i);
msg = msg.substr(i+4);
- } else
+ } else
backtrace_.clear();
stream() << msg << std::endl;
}
unsigned minWidth)
{
unsigned rv (defaultWidth);
- try {
- rv = get(os).width();
+ try {
+ rv = get(os).width();
}
catch (std::bad_cast &) {}
return rv < minWidth ? defaultWidth : rv;
prefix_ senf::console::Client::SysBacktrace::SysBacktrace()
{
- sysdir().node().add("backtrace", &SysBacktrace::backtrace)
- .doc("Display the backtrace of the last error / exception in this console");
+ namespace fty = senf::console::factory;
+
+ sysdir().add("backtrace", fty::Command(&SysBacktrace::backtrace)
+ .doc("Display the backtrace of the last error / exception in this console") );
}
prefix_ void senf::console::Client::SysBacktrace::backtrace(std::ostream & os)