X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FServer.cci;h=405347ce97a716db99a3fdd7dcbfb6516c8066ad;hb=feeec0e9cd78825120bd52f9ef4e115d383bf6a8;hp=8e0d434b125eabcfc8baceefadebf68c66522edf;hpb=1a7c3a40d3e477b789c3fdfe7cacb01649d47edf;p=senf.git diff --git a/Console/Server.cci b/Console/Server.cci index 8e0d434..405347c 100644 --- a/Console/Server.cci +++ b/Console/Server.cci @@ -37,12 +37,103 @@ prefix_ senf::console::detail::NonblockingSocketSink::NonblockingSocketSink(Clie : client_ (client) {} +prefix_ senf::console::Client & senf::console::detail::NonblockingSocketSink::client() + const +{ + return client_; +} + /////////////////////////////////////////////////////////////////////////// // senf::console::Server -prefix_ void senf::console::Server::name(std::string const & name) +prefix_ senf::console::Server & senf::console::Server::name(std::string const & name) { name_ = name; + return *this; +} + +prefix_ std::string const & senf::console::Server::name() + const +{ + return name_; +} + +prefix_ senf::console::Server & senf::console::Server::root(DirectoryNode & root) +{ + root_ = root.thisptr(); + return *this; +} + +prefix_ senf::console::Server & senf::console::Server::mode(Mode m) +{ + mode_ = m; + return *this; +} + +prefix_ senf::console::Server::Mode senf::console::Server::mode() + const +{ + return mode_; +} + +prefix_ void senf::console::Server::stop() +{ + // commit suicide + instancePtr().reset(0); +} + +/////////////////////////////////////////////////////////////////////////// +// senf::console::Client + +prefix_ senf::console::Client::~Client() +{ + stream() << std::flush; +} + +prefix_ void senf::console::Client::stop() +{ + // THIS COMMITS SUICIDE. THE INSTANCE IS GONE AFTER removeClient RETURNS + server_.removeClient(*this); +} + +prefix_ std::string const & senf::console::Client::name() + const +{ + return name_; +} + +prefix_ std::string senf::console::Client::promptString() + const +{ + return name_ + ":" + executor_.cwdPath() + "$ "; +} + +prefix_ senf::console::DirectoryNode & senf::console::Client::root() + const +{ + return server_.root(); +} + +prefix_ senf::console::Server::Mode senf::console::Client::mode() + const +{ + return mode_; +} + +prefix_ senf::console::Client & senf::console::Client::get(std::ostream & os) +{ + return dynamic_cast(os)->client(); +} + +prefix_ senf::console::Client::ClientHandle senf::console::Client::handle() + const +{ + return handle_; +} + +prefix_ std::ostream & senf::console::Client::stream() +{ + return out_t::member; } /////////////////////////////////////////////////////////////////////////// @@ -80,10 +171,11 @@ prefix_ void senf::console::detail::ClientReader::stopClient() client().stop(); } -prefix_ void senf::console::detail::ClientReader::handleInput(std::string const & input) +prefix_ std::string::size_type +senf::console::detail::ClientReader::handleInput(std::string const & input, bool incremental) const { - client().handleInput(input); + return client().handleInput(input, incremental); } prefix_ void senf::console::detail::ClientReader::disablePrompt() @@ -105,41 +197,6 @@ prefix_ senf::console::detail::ClientReader::ClientReader(Client & client) : client_ (client) {} -/////////////////////////////////////////////////////////////////////////// -// senf::console::Client - -prefix_ senf::console::Client::~Client() -{} - -prefix_ void senf::console::Client::stop() -{ - // THIS COMMITS SUICIDE. THE INSTANCE IS GONE AFTER removeClient RETURNS - server_.removeClient(*this); -} - -prefix_ std::string const & senf::console::Client::name() - const -{ - return name_; -} - -prefix_ std::string senf::console::Client::promptString() - const -{ - return name_ + ":" + executor_.cwd().path() + "$ "; -} - -prefix_ senf::console::Client::ClientHandle senf::console::Client::handle() - const -{ - return handle_; -} - -prefix_ std::ostream & senf::console::Client::stream() -{ - return out_t::member; -} - ///////////////////////////////cci.e/////////////////////////////////////// #undef prefix_