///< Start server on given IPv4 address/port
static Server & start(senf::INet6SocketAddress const & address);
///< Start server on given IPv6 address/port
- void name(std::string const & name); ///< Set server name
+ Server & name(std::string const & name); ///< Set server name
/**< This information is used in the prompt string. */
-
+
+ void stop(); ///< Stop the server
+ /**< All clients will be closed */
+
protected:
private:
Whenever a new client connects, a new instance of this class is created. This class shows a
command prompt, receives the commands, parses them and then passes (using a CommandParser)
and passes the commands to an Executor instance.
-
- \fixme Fix Client::clientData implementation
- \fixme Don't register a new ReadHelper every round
*/
class Client
: public senf::intrusive_refcount,
void stop(); ///< Stop the client
/**< This will close the client socket. */
+ std::string const & name() const;
+ ClientHandle handle() const;
+ std::ostream & stream();
+ std::string promptString() const;
+
+ static Client & get(std::ostream & os);
+
protected:
private:
Client(Server & server, ClientHandle handle, std::string const & name);
- std::string promptString() const;
- ClientHandle handle() const;
- detail::NonblockingSocketOStream & stream();
-
+ void translate(std::string & data);
void handleInput(std::string input);
-
virtual void v_write(boost::posix_time::ptime timestamp, std::string const & stream,
std::string const & area, unsigned level,
std::string const & message);
friend class Server;
friend class detail::ClientReader;
+ friend class detail::NonblockingSocketSink;
};
}}