remote.cc: move write function as member of Message
This commit is contained in:
parent
db3a953961
commit
b63c658da5
120
src/remote.cc
120
src/remote.cc
|
@ -38,55 +38,55 @@ public:
|
||||||
m_stream.insert(m_stream.end(), val, val + size);
|
m_stream.insert(m_stream.end(), val, val + size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void write(const T& val)
|
||||||
|
{
|
||||||
|
write((const char*)&val, sizeof(val));
|
||||||
|
};
|
||||||
|
|
||||||
|
void write(const String& str)
|
||||||
|
{
|
||||||
|
write(str.length());
|
||||||
|
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(const std::vector<T>& vec)
|
||||||
|
{
|
||||||
|
write(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(const DisplayLine& line)
|
||||||
|
{
|
||||||
|
write(line.atoms());
|
||||||
|
}
|
||||||
|
|
||||||
|
void write(const DisplayBuffer& display_buffer)
|
||||||
|
{
|
||||||
|
write(display_buffer.lines());
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<char> m_stream;
|
std::vector<char> m_stream;
|
||||||
int m_socket;
|
int m_socket;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
void write(Message& msg, const T& val)
|
|
||||||
{
|
|
||||||
msg.write((const char*)&val, sizeof(val));
|
|
||||||
};
|
|
||||||
|
|
||||||
void write(Message& msg, const String& str)
|
|
||||||
{
|
|
||||||
write(msg, str.length());
|
|
||||||
msg.write(str.c_str(), (int)str.length());
|
|
||||||
};
|
|
||||||
|
|
||||||
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(Message& msg, const std::vector<T>& vec)
|
|
||||||
{
|
|
||||||
write(msg, memoryview<T>(vec));
|
|
||||||
}
|
|
||||||
|
|
||||||
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(Message& msg, const DisplayLine& line)
|
|
||||||
{
|
|
||||||
write(msg, line.atoms());
|
|
||||||
}
|
|
||||||
|
|
||||||
void write(Message& msg, const DisplayBuffer& display_buffer)
|
|
||||||
{
|
|
||||||
write(msg, display_buffer.lines());
|
|
||||||
}
|
|
||||||
|
|
||||||
void read(int socket, char* buffer, size_t size)
|
void read(int socket, char* buffer, size_t size)
|
||||||
{
|
{
|
||||||
while (size)
|
while (size)
|
||||||
|
@ -173,41 +173,41 @@ RemoteUI::~RemoteUI()
|
||||||
void RemoteUI::print_status(const String& status, CharCount cursor_pos)
|
void RemoteUI::print_status(const String& status, CharCount cursor_pos)
|
||||||
{
|
{
|
||||||
Message msg(m_socket);
|
Message msg(m_socket);
|
||||||
write(msg, RemoteUIMsg::PrintStatus);
|
msg.write(RemoteUIMsg::PrintStatus);
|
||||||
write(msg, status);
|
msg.write(status);
|
||||||
write(msg, cursor_pos);
|
msg.write(cursor_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoteUI::menu_show(const memoryview<String>& choices,
|
void RemoteUI::menu_show(const memoryview<String>& choices,
|
||||||
const DisplayCoord& anchor, MenuStyle style)
|
const DisplayCoord& anchor, MenuStyle style)
|
||||||
{
|
{
|
||||||
Message msg(m_socket);
|
Message msg(m_socket);
|
||||||
write(msg, RemoteUIMsg::MenuShow);
|
msg.write(RemoteUIMsg::MenuShow);
|
||||||
write(msg, choices);
|
msg.write(choices);
|
||||||
write(msg, anchor);
|
msg.write(anchor);
|
||||||
write(msg, style);
|
msg.write(style);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoteUI::menu_select(int selected)
|
void RemoteUI::menu_select(int selected)
|
||||||
{
|
{
|
||||||
Message msg(m_socket);
|
Message msg(m_socket);
|
||||||
write(msg, RemoteUIMsg::MenuSelect);
|
msg.write(RemoteUIMsg::MenuSelect);
|
||||||
write(msg, selected);
|
msg.write(selected);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoteUI::menu_hide()
|
void RemoteUI::menu_hide()
|
||||||
{
|
{
|
||||||
Message msg(m_socket);
|
Message msg(m_socket);
|
||||||
write(msg, RemoteUIMsg::MenuHide);
|
msg.write(RemoteUIMsg::MenuHide);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoteUI::draw(const DisplayBuffer& display_buffer,
|
void RemoteUI::draw(const DisplayBuffer& display_buffer,
|
||||||
const String& mode_line)
|
const String& mode_line)
|
||||||
{
|
{
|
||||||
Message msg(m_socket);
|
Message msg(m_socket);
|
||||||
write(msg, RemoteUIMsg::Draw);
|
msg.write(RemoteUIMsg::Draw);
|
||||||
write(msg, display_buffer);
|
msg.write(display_buffer);
|
||||||
write(msg, mode_line);
|
msg.write(mode_line);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const Key::Modifiers resize_modifier = (Key::Modifiers)0x80;
|
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) };
|
Key key{ resize_modifier, Codepoint(((int)m_dimensions.line << 16) | (int)m_dimensions.column) };
|
||||||
Message msg(socket);
|
Message msg(socket);
|
||||||
write(msg, key);
|
msg.write(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RemoteClient::process_next_message()
|
void RemoteClient::process_next_message()
|
||||||
|
@ -291,14 +291,14 @@ void RemoteClient::write_next_key()
|
||||||
Message msg(m_socket);
|
Message msg(m_socket);
|
||||||
// do that before checking dimensions as get_key may
|
// do that before checking dimensions as get_key may
|
||||||
// handle a resize event.
|
// handle a resize event.
|
||||||
write(msg, m_ui->get_key());
|
msg.write(m_ui->get_key());
|
||||||
|
|
||||||
DisplayCoord dimensions = m_ui->dimensions();
|
DisplayCoord dimensions = m_ui->dimensions();
|
||||||
if (dimensions != m_dimensions)
|
if (dimensions != m_dimensions)
|
||||||
{
|
{
|
||||||
m_dimensions = dimensions;
|
m_dimensions = dimensions;
|
||||||
Key key{ resize_modifier, Codepoint(((int)dimensions.line << 16) | (int)dimensions.column) };
|
Key key{ resize_modifier, Codepoint(((int)dimensions.line << 16) | (int)dimensions.column) };
|
||||||
write(msg, key);
|
msg.write(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user