diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2012-12-10 18:55:11 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2012-12-13 18:49:29 +0100 |
| commit | b63c658da569b4d3542e2078c818e8bfe16cdc4e (patch) | |
| tree | 9f141cfc117b27a5af12bc6070b29720a692310f /src/remote.cc | |
| parent | db3a9539619712a9a35146a74597619d4e54a67b (diff) | |
remote.cc: move write function as member of Message
Diffstat (limited to 'src/remote.cc')
| -rw-r--r-- | src/remote.cc | 114 |
1 files changed, 57 insertions, 57 deletions
diff --git a/src/remote.cc b/src/remote.cc index bf6300a6..72528a38 100644 --- a/src/remote.cc +++ b/src/remote.cc @@ -38,54 +38,54 @@ public: m_stream.insert(m_stream.end(), val, val + size); } -private: - std::vector<char> m_stream; - int m_socket; -}; + template<typename T> + void write(const T& val) + { + write((const char*)&val, sizeof(val)); + }; -template<typename T> -void write(Message& msg, const T& val) -{ - msg.write((const char*)&val, sizeof(val)); -}; + void write(const String& str) + { + write(str.length()); + write(str.c_str(), (int)str.length()); + }; -void write(Message& msg, const String& str) -{ - write(msg, str.length()); - msg.write(str.c_str(), (int)str.length()); -}; + template<typename T> + void write(const memoryview<T>& view) + { + write<uint32_t>(view.size()); + for (auto& val : view) + write(val); + }; -template<typename T> -void write(Message& msg, const memoryview<T>& view) -{ - write<uint32_t>(msg, view.size()); - for (auto& val : view) - write(msg, val); -}; + template<typename T> + void write(const std::vector<T>& vec) + { + write(memoryview<T>(vec)); + } -template<typename T> -void write(Message& msg, const std::vector<T>& vec) -{ - write(msg, memoryview<T>(vec)); -} + void write(const DisplayAtom& atom) + { + write(atom.fg_color); + write(atom.bg_color); + write(atom.attribute); + write(atom.content.content()); + } -void write(Message& msg, const DisplayAtom& atom) -{ - write(msg, atom.fg_color); - write(msg, atom.bg_color); - write(msg, atom.attribute); - write(msg, atom.content.content()); -} + void write(const DisplayLine& line) + { + write(line.atoms()); + } -void write(Message& msg, const DisplayLine& line) -{ - write(msg, line.atoms()); -} + void write(const DisplayBuffer& display_buffer) + { + write(display_buffer.lines()); + } -void write(Message& msg, const DisplayBuffer& display_buffer) -{ - write(msg, display_buffer.lines()); -} +private: + std::vector<char> m_stream; + int m_socket; +}; void read(int socket, char* buffer, size_t size) { @@ -173,41 +173,41 @@ RemoteUI::~RemoteUI() void RemoteUI::print_status(const String& status, CharCount cursor_pos) { Message msg(m_socket); - write(msg, RemoteUIMsg::PrintStatus); - write(msg, status); - write(msg, cursor_pos); + msg.write(RemoteUIMsg::PrintStatus); + msg.write(status); + msg.write(cursor_pos); } void RemoteUI::menu_show(const memoryview<String>& choices, const DisplayCoord& anchor, MenuStyle style) { Message msg(m_socket); - write(msg, RemoteUIMsg::MenuShow); - write(msg, choices); - write(msg, anchor); - write(msg, style); + msg.write(RemoteUIMsg::MenuShow); + msg.write(choices); + msg.write(anchor); + msg.write(style); } void RemoteUI::menu_select(int selected) { Message msg(m_socket); - write(msg, RemoteUIMsg::MenuSelect); - write(msg, selected); + msg.write(RemoteUIMsg::MenuSelect); + msg.write(selected); } void RemoteUI::menu_hide() { Message msg(m_socket); - write(msg, RemoteUIMsg::MenuHide); + msg.write(RemoteUIMsg::MenuHide); } void RemoteUI::draw(const DisplayBuffer& display_buffer, const String& mode_line) { Message msg(m_socket); - write(msg, RemoteUIMsg::Draw); - write(msg, display_buffer); - write(msg, mode_line); + msg.write(RemoteUIMsg::Draw); + msg.write(display_buffer); + msg.write(mode_line); } static const Key::Modifiers resize_modifier = (Key::Modifiers)0x80; @@ -247,7 +247,7 @@ RemoteClient::RemoteClient(int socket, UserInterface* ui) { Key key{ resize_modifier, Codepoint(((int)m_dimensions.line << 16) | (int)m_dimensions.column) }; Message msg(socket); - write(msg, key); + msg.write(key); } void RemoteClient::process_next_message() @@ -291,14 +291,14 @@ void RemoteClient::write_next_key() Message msg(m_socket); // do that before checking dimensions as get_key may // handle a resize event. - write(msg, m_ui->get_key()); + msg.write(m_ui->get_key()); DisplayCoord dimensions = m_ui->dimensions(); if (dimensions != m_dimensions) { m_dimensions = dimensions; Key key{ resize_modifier, Codepoint(((int)dimensions.line << 16) | (int)dimensions.column) }; - write(msg, key); + msg.write(key); } } |
