WriteablePolicy,
ConnectedCommunicationPolicy>::policy > Handle;
- NonblockingSocketSink(Handle handle);
+ NonblockingSocketSink(Client & client);
std::streamsize write(const char * s, std::streamsize n);
+
+ Client & client() const;
private:
- Handle handle_;
+ Client & client_;
};
typedef boost::iostreams::stream<NonblockingSocketSink> NonblockingSocketOStream;
{
public:
typedef ServerHandle::ClientSocketHandle ClientHandle;
- typedef NonblockingSocketOStream OutputStream;
virtual ~ClientReader() = 0;
+ // Called by subclasses to get information from the Client
+
Client & client() const;
std::string promptString() const;
ClientHandle handle() const;
- OutputStream & stream() const;
+ std::ostream & stream() const;
+
+ // Called by subclasses to perform actions in the Client
+
void stopClient();
-
void handleInput(std::string const & input) const;
+ // Called by the Client
+
void disablePrompt();
void enablePrompt();
+ void translate(std::string & data);
protected:
ClientReader(Client & client);
private:
virtual void v_disablePrompt() = 0;
virtual void v_enablePrompt() = 0;
+ virtual void v_translate(std::string & data) = 0;
Client & client_;
};
private:
virtual void v_disablePrompt();
virtual void v_enablePrompt();
+ virtual void v_translate(std::string & data);
void clientData(senf::ReadHelper<ClientHandle>::ptr helper);
void showPrompt();