X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FServer.cci;h=b68443977c40485b98db726a989dc9f841880ae7;hb=e879290346fe5242d7df2d70ee552d264081492f;hp=5147dfdba89bdb752d116a17e29176268864bd38;hpb=6e417a227d417cef20d55af94e2474fbe9c280b8;p=senf.git diff --git a/Console/Server.cci b/Console/Server.cci index 5147dfd..b684439 100644 --- a/Console/Server.cci +++ b/Console/Server.cci @@ -33,16 +33,29 @@ /////////////////////////////////////////////////////////////////////////// // senf::console::detail::NonblockingSocketSink -prefix_ senf::console::detail::NonblockingSocketSink::NonblockingSocketSink(Handle handle) - : handle_ (handle) +prefix_ senf::console::detail::NonblockingSocketSink::NonblockingSocketSink(Client & client) + : 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_ void senf::console::Server::stop() +{ + // commit suicide + instancePtr().reset(0); } /////////////////////////////////////////////////////////////////////////// @@ -69,7 +82,7 @@ prefix_ senf::console::detail::ClientReader::ClientHandle senf::console::detail: return client().handle(); } -prefix_ senf::console::detail::ClientReader::OutputStream & senf::console::detail::ClientReader::stream() +prefix_ std::ostream & senf::console::detail::ClientReader::stream() const { return client().stream(); @@ -96,6 +109,11 @@ prefix_ void senf::console::detail::ClientReader::enablePrompt() v_enablePrompt(); } +prefix_ void senf::console::detail::ClientReader::translate(std::string & data) +{ + v_translate(data); +} + prefix_ senf::console::detail::ClientReader::ClientReader(Client & client) : client_ (client) {} @@ -103,19 +121,39 @@ prefix_ senf::console::detail::ClientReader::ClientReader(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 & 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_ senf::console::detail::NonblockingSocketOStream & senf::console::Client::stream() +prefix_ std::ostream & senf::console::Client::stream() { return out_t::member; }