X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FConsole%2FServer.hh;h=825bc281334ffbfefeea9b72bb9d1970307b1994;hb=6aae6e526573187ece558842e928578e5aa4cc4c;hp=53aa9697eb0c0844cf69dbb99bf79bf96a3b36f0;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/Utils/Console/Server.hh b/senf/Utils/Console/Server.hh index 53aa969..825bc28 100644 --- a/senf/Utils/Console/Server.hh +++ b/senf/Utils/Console/Server.hh @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2008 +// Copyright (C) 2008 // Fraunhofer Institute for Open Communication Systems (FOKUS) // Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund @@ -31,15 +31,15 @@ #include #include #include -#include "../../Utils/intrusive_refcount.hh" -#include "../../Socket/Protocols/INet/TCPSocketHandle.hh" -#include "../../Socket/ServerSocketHandle.hh" -#include "../../Scheduler/Scheduler.hh" -#include "../../Scheduler/ReadHelper.hh" +#include +#include +#include +#include +#include #include "Parse.hh" #include "Executor.hh" -#include "../../Socket/Protocols/INet/INetAddressing.hh" -#include "../../Utils/Logger.hh" +#include +#include //#include "Server.mpp" #include "Server.ih" @@ -72,7 +72,7 @@ namespace console { public: /////////////////////////////////////////////////////////////////////////// // Types - + typedef detail::ServerHandle ServerHandle; enum Mode { Automatic, Interactive, Noninteractive }; @@ -98,9 +98,9 @@ namespace console { Mode mode() const; ///< Get mode /**< \see \ref mode(Mode) */ - + Server & mode(Mode mode); ///< Set mode - /**< There are two Server types: + /**< There are two Server types: \li An interactive server displays a command prompt and optionally supports command-line editing. \li A non-interactive server does not display any @@ -115,7 +115,7 @@ namespace console { opened. */ void stop(); ///< Stop the server - /**< All clients will be closed + /**< All clients will be closed \warning The Server instance itself will be deleted */ protected: @@ -127,19 +127,19 @@ namespace console { void newClient(int event); void removeClient(Client & client); - + ServerHandle handle_; scheduler::FdEvent event_; DirectoryNode::ptr root_; Mode mode_; - + typedef std::set< boost::intrusive_ptr > Clients; Clients clients_; std::string name_; - + friend class Client; }; - + /** \brief Server client instance Whenever a new client connects, a new instance of this class is created. This class shows a @@ -149,7 +149,7 @@ namespace console { \ingroup console_access */ class Client - : public senf::intrusive_refcount, + : public senf::intrusive_refcount, private boost::base_from_member< detail::NonblockingSocketOStream >, public senf::log::IOStreamTarget { @@ -174,7 +174,7 @@ namespace console { ClientHandle handle() const; ///< Get the client's network socket handle std::ostream & stream(); ///< Get client's output stream /**< Data sent to this stream is sent out over the network - via the client's socket handle. Write operation is + via the client's socket handle. Write operation is non-blocking and data may be dropped. Data is written using Client::write(). */ std::string promptString() const; ///< Get the prompt string @@ -204,18 +204,18 @@ namespace console { will return the associated Client instance reference. \throws std::bad_cast if \a os is not associated with a Client instance. */ - static unsigned getWidth(std::ostream & os, unsigned defaultWidth = 0, + static unsigned getWidth(std::ostream & os, unsigned defaultWidth = 0, unsigned minWidth = 0); ///< Get width of client console if possible /**< If possible, the width of the client console attached to the stream \a os is returned. If this is not possible, the \a defaultValue will be used. - + If the width obtained this way is smaller than \a minWidth, \a defaultValue will be returned instead. */ protected: - + private: Client(Server & server, ClientHandle handle); @@ -223,10 +223,10 @@ namespace console { void setNoninteractive(); size_t handleInput(std::string input, bool incremental = false); - virtual void v_write(senf::log::time_type timestamp, std::string const & stream, - std::string const & area, unsigned level, + virtual void v_write(senf::log::time_type timestamp, std::string const & stream, + std::string const & area, unsigned level, std::string const & message); - + Server & server_; ClientHandle handle_; scheduler::FdEvent readevent_; @@ -242,15 +242,15 @@ namespace console { friend class detail::ClientReader; friend class detail::NonblockingSocketSink; - class SysBacktrace + class SysBacktrace { SysBacktrace(); static void backtrace(std::ostream & os); static SysBacktrace instance_; }; - + }; - + /** \brief Output Console Client instance as it's string representation \related Client */