Files
Custom-Operating-System/libs/libapi/include/libapi/window_server/Connections/WSConnection.h

1408 lines
48 KiB
C++

// Auto generated with utils/ConnectionCompiler
// See .ipc file
#pragma once
#include <libg/Rect.h>
#include <libipc/ClientConnection.h>
#include <libipc/Encoder.h>
#include <libipc/ServerConnection.h>
#include <libipc/StringEncoder.h>
#include <libipc/VectorEncoder.h>
#include <new>
class GreetMessage : public Message {
public:
GreetMessage(message_key_t key)
: m_key(key)
{
}
int id() const override { return 1; }
int reply_id() const override { return 2; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
return buffer;
}
private:
message_key_t m_key;
};
class GreetMessageReply : public Message {
public:
GreetMessageReply(message_key_t key, uint32_t connection_id)
: m_key(key)
, m_connection_id(connection_id)
{
}
int id() const override { return 2; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
uint32_t connection_id() const { return m_connection_id; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_connection_id);
return buffer;
}
private:
message_key_t m_key;
uint32_t m_connection_id;
};
class CreateWindowMessage : public Message {
public:
CreateWindowMessage(message_key_t key, int type, uint32_t width, uint32_t height, int buffer_id, LIPC::StringEncoder title, LIPC::StringEncoder icon_path, LIPC::StringEncoder bundle_id, uint32_t color, uint32_t menubar_style)
: m_key(key)
, m_type(type)
, m_width(width)
, m_height(height)
, m_buffer_id(buffer_id)
, m_title(title)
, m_icon_path(icon_path)
, m_bundle_id(bundle_id)
, m_color(color)
, m_menubar_style(menubar_style)
{
}
int id() const override { return 3; }
int reply_id() const override { return 4; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
int type() const { return m_type; }
uint32_t width() const { return m_width; }
uint32_t height() const { return m_height; }
int buffer_id() const { return m_buffer_id; }
LIPC::StringEncoder& title() { return m_title; }
LIPC::StringEncoder& icon_path() { return m_icon_path; }
LIPC::StringEncoder& bundle_id() { return m_bundle_id; }
uint32_t color() const { return m_color; }
uint32_t menubar_style() const { return m_menubar_style; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_type);
Encoder::append(buffer, m_width);
Encoder::append(buffer, m_height);
Encoder::append(buffer, m_buffer_id);
Encoder::append(buffer, m_title);
Encoder::append(buffer, m_icon_path);
Encoder::append(buffer, m_bundle_id);
Encoder::append(buffer, m_color);
Encoder::append(buffer, m_menubar_style);
return buffer;
}
private:
message_key_t m_key;
int m_type;
uint32_t m_width;
uint32_t m_height;
int m_buffer_id;
LIPC::StringEncoder m_title;
LIPC::StringEncoder m_icon_path;
LIPC::StringEncoder m_bundle_id;
uint32_t m_color;
uint32_t m_menubar_style;
};
class CreateWindowMessageReply : public Message {
public:
CreateWindowMessageReply(message_key_t key, uint32_t window_id)
: m_key(key)
, m_window_id(window_id)
{
}
int id() const override { return 4; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
uint32_t window_id() const { return m_window_id; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_window_id);
return buffer;
}
private:
message_key_t m_key;
uint32_t m_window_id;
};
class DestroyWindowMessage : public Message {
public:
DestroyWindowMessage(message_key_t key, uint32_t window_id)
: m_key(key)
, m_window_id(window_id)
{
}
int id() const override { return 5; }
int reply_id() const override { return 6; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
uint32_t window_id() const { return m_window_id; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_window_id);
return buffer;
}
private:
message_key_t m_key;
uint32_t m_window_id;
};
class DestroyWindowMessageReply : public Message {
public:
DestroyWindowMessageReply(message_key_t key, uint32_t status)
: m_key(key)
, m_status(status)
{
}
int id() const override { return 6; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
uint32_t status() const { return m_status; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_status);
return buffer;
}
private:
message_key_t m_key;
uint32_t m_status;
};
class SetBufferMessage : public Message {
public:
SetBufferMessage(message_key_t key, uint32_t window_id, int buffer_id, int format, LG::Rect bounds)
: m_key(key)
, m_window_id(window_id)
, m_buffer_id(buffer_id)
, m_format(format)
, m_bounds(bounds)
{
}
int id() const override { return 7; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
uint32_t window_id() const { return m_window_id; }
int buffer_id() const { return m_buffer_id; }
int format() const { return m_format; }
LG::Rect& bounds() { return m_bounds; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_window_id);
Encoder::append(buffer, m_buffer_id);
Encoder::append(buffer, m_format);
Encoder::append(buffer, m_bounds);
return buffer;
}
private:
message_key_t m_key;
uint32_t m_window_id;
int m_buffer_id;
int m_format;
LG::Rect m_bounds;
};
class SetBarStyleMessage : public Message {
public:
SetBarStyleMessage(message_key_t key, uint32_t window_id, uint32_t color, uint32_t menubar_style)
: m_key(key)
, m_window_id(window_id)
, m_color(color)
, m_menubar_style(menubar_style)
{
}
int id() const override { return 8; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
uint32_t window_id() const { return m_window_id; }
uint32_t color() const { return m_color; }
uint32_t menubar_style() const { return m_menubar_style; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_window_id);
Encoder::append(buffer, m_color);
Encoder::append(buffer, m_menubar_style);
return buffer;
}
private:
message_key_t m_key;
uint32_t m_window_id;
uint32_t m_color;
uint32_t m_menubar_style;
};
class SetTitleMessage : public Message {
public:
SetTitleMessage(message_key_t key, uint32_t window_id, LIPC::StringEncoder title)
: m_key(key)
, m_window_id(window_id)
, m_title(title)
{
}
int id() const override { return 9; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
uint32_t window_id() const { return m_window_id; }
LIPC::StringEncoder& title() { return m_title; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_window_id);
Encoder::append(buffer, m_title);
return buffer;
}
private:
message_key_t m_key;
uint32_t m_window_id;
LIPC::StringEncoder m_title;
};
class InvalidateMessage : public Message {
public:
InvalidateMessage(message_key_t key, uint32_t window_id, LG::Rect rect)
: m_key(key)
, m_window_id(window_id)
, m_rect(rect)
{
}
int id() const override { return 10; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
uint32_t window_id() const { return m_window_id; }
LG::Rect& rect() { return m_rect; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_window_id);
Encoder::append(buffer, m_rect);
return buffer;
}
private:
message_key_t m_key;
uint32_t m_window_id;
LG::Rect m_rect;
};
class AskBringToFrontMessage : public Message {
public:
AskBringToFrontMessage(message_key_t key, uint32_t window_id, uint32_t target_window_id)
: m_key(key)
, m_window_id(window_id)
, m_target_window_id(target_window_id)
{
}
int id() const override { return 11; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
uint32_t window_id() const { return m_window_id; }
uint32_t target_window_id() const { return m_target_window_id; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_window_id);
Encoder::append(buffer, m_target_window_id);
return buffer;
}
private:
message_key_t m_key;
uint32_t m_window_id;
uint32_t m_target_window_id;
};
class MenuBarCreateMenuMessage : public Message {
public:
MenuBarCreateMenuMessage(message_key_t key, uint32_t window_id, LIPC::StringEncoder title)
: m_key(key)
, m_window_id(window_id)
, m_title(title)
{
}
int id() const override { return 12; }
int reply_id() const override { return 13; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
uint32_t window_id() const { return m_window_id; }
LIPC::StringEncoder& title() { return m_title; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_window_id);
Encoder::append(buffer, m_title);
return buffer;
}
private:
message_key_t m_key;
uint32_t m_window_id;
LIPC::StringEncoder m_title;
};
class MenuBarCreateMenuMessageReply : public Message {
public:
MenuBarCreateMenuMessageReply(message_key_t key, int status, int menu_id)
: m_key(key)
, m_status(status)
, m_menu_id(menu_id)
{
}
int id() const override { return 13; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
int status() const { return m_status; }
int menu_id() const { return m_menu_id; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_status);
Encoder::append(buffer, m_menu_id);
return buffer;
}
private:
message_key_t m_key;
int m_status;
int m_menu_id;
};
class MenuBarCreateItemMessage : public Message {
public:
MenuBarCreateItemMessage(message_key_t key, uint32_t window_id, int menu_id, int item_id, LIPC::StringEncoder title)
: m_key(key)
, m_window_id(window_id)
, m_menu_id(menu_id)
, m_item_id(item_id)
, m_title(title)
{
}
int id() const override { return 14; }
int reply_id() const override { return 15; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
uint32_t window_id() const { return m_window_id; }
int menu_id() const { return m_menu_id; }
int item_id() const { return m_item_id; }
LIPC::StringEncoder& title() { return m_title; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_window_id);
Encoder::append(buffer, m_menu_id);
Encoder::append(buffer, m_item_id);
Encoder::append(buffer, m_title);
return buffer;
}
private:
message_key_t m_key;
uint32_t m_window_id;
int m_menu_id;
int m_item_id;
LIPC::StringEncoder m_title;
};
class MenuBarCreateItemMessageReply : public Message {
public:
MenuBarCreateItemMessageReply(message_key_t key, int status)
: m_key(key)
, m_status(status)
{
}
int id() const override { return 15; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
int status() const { return m_status; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_status);
return buffer;
}
private:
message_key_t m_key;
int m_status;
};
class PopupShowMenuMessage : public Message {
public:
PopupShowMenuMessage(message_key_t key, uint32_t window_id, LG::Point<int> point, LIPC::VectorEncoder<LIPC::StringEncoder> data)
: m_key(key)
, m_window_id(window_id)
, m_point(point)
, m_data(data)
{
}
int id() const override { return 16; }
int reply_id() const override { return 17; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
uint32_t window_id() const { return m_window_id; }
LG::Point<int>& point() { return m_point; }
LIPC::VectorEncoder<LIPC::StringEncoder>& data() { return m_data; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_window_id);
Encoder::append(buffer, m_point);
Encoder::append(buffer, m_data);
return buffer;
}
private:
message_key_t m_key;
uint32_t m_window_id;
LG::Point<int> m_point;
LIPC::VectorEncoder<LIPC::StringEncoder> m_data;
};
class PopupShowMenuMessageReply : public Message {
public:
PopupShowMenuMessageReply(message_key_t key, int status, int menu_id)
: m_key(key)
, m_status(status)
, m_menu_id(menu_id)
{
}
int id() const override { return 17; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 320; }
int status() const { return m_status; }
int menu_id() const { return m_menu_id; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_status);
Encoder::append(buffer, m_menu_id);
return buffer;
}
private:
message_key_t m_key;
int m_status;
int m_menu_id;
};
class BaseWindowServerDecoder : public MessageDecoder {
public:
BaseWindowServerDecoder() { }
int magic() const { return 320; }
std::unique_ptr<Message> decode(const char* buf, size_t size, size_t& decoded_msg_len) override
{
int msg_id, decoder_magic;
size_t saved_dml = decoded_msg_len;
Encoder::decode(buf, decoded_msg_len, decoder_magic);
Encoder::decode(buf, decoded_msg_len, msg_id);
if (magic() != decoder_magic) {
decoded_msg_len = saved_dml;
return nullptr;
}
message_key_t secret_key;
Encoder::decode(buf, decoded_msg_len, secret_key);
uint32_t var_connection_id;
int var_type;
uint32_t var_width;
uint32_t var_height;
int var_buffer_id;
LIPC::StringEncoder var_title;
LIPC::StringEncoder var_icon_path;
LIPC::StringEncoder var_bundle_id;
uint32_t var_color;
uint32_t var_menubar_style;
uint32_t var_window_id;
uint32_t var_status;
int var_format;
LG::Rect var_bounds;
LG::Rect var_rect;
uint32_t var_target_window_id;
int var_menu_id;
int var_item_id;
LG::Point<int> var_point;
LIPC::VectorEncoder<LIPC::StringEncoder> var_data;
switch (msg_id) {
case 1:
return new GreetMessage(secret_key);
case 2:
Encoder::decode(buf, decoded_msg_len, var_connection_id);
return new GreetMessageReply(secret_key, var_connection_id);
case 3:
Encoder::decode(buf, decoded_msg_len, var_type);
Encoder::decode(buf, decoded_msg_len, var_width);
Encoder::decode(buf, decoded_msg_len, var_height);
Encoder::decode(buf, decoded_msg_len, var_buffer_id);
Encoder::decode(buf, decoded_msg_len, var_title);
Encoder::decode(buf, decoded_msg_len, var_icon_path);
Encoder::decode(buf, decoded_msg_len, var_bundle_id);
Encoder::decode(buf, decoded_msg_len, var_color);
Encoder::decode(buf, decoded_msg_len, var_menubar_style);
return new CreateWindowMessage(secret_key, var_type, var_width, var_height, var_buffer_id, var_title, var_icon_path, var_bundle_id, var_color, var_menubar_style);
case 4:
Encoder::decode(buf, decoded_msg_len, var_window_id);
return new CreateWindowMessageReply(secret_key, var_window_id);
case 5:
Encoder::decode(buf, decoded_msg_len, var_window_id);
return new DestroyWindowMessage(secret_key, var_window_id);
case 6:
Encoder::decode(buf, decoded_msg_len, var_status);
return new DestroyWindowMessageReply(secret_key, var_status);
case 7:
Encoder::decode(buf, decoded_msg_len, var_window_id);
Encoder::decode(buf, decoded_msg_len, var_buffer_id);
Encoder::decode(buf, decoded_msg_len, var_format);
Encoder::decode(buf, decoded_msg_len, var_bounds);
return new SetBufferMessage(secret_key, var_window_id, var_buffer_id, var_format, var_bounds);
case 8:
Encoder::decode(buf, decoded_msg_len, var_window_id);
Encoder::decode(buf, decoded_msg_len, var_color);
Encoder::decode(buf, decoded_msg_len, var_menubar_style);
return new SetBarStyleMessage(secret_key, var_window_id, var_color, var_menubar_style);
case 9:
Encoder::decode(buf, decoded_msg_len, var_window_id);
Encoder::decode(buf, decoded_msg_len, var_title);
return new SetTitleMessage(secret_key, var_window_id, var_title);
case 10:
Encoder::decode(buf, decoded_msg_len, var_window_id);
Encoder::decode(buf, decoded_msg_len, var_rect);
return new InvalidateMessage(secret_key, var_window_id, var_rect);
case 11:
Encoder::decode(buf, decoded_msg_len, var_window_id);
Encoder::decode(buf, decoded_msg_len, var_target_window_id);
return new AskBringToFrontMessage(secret_key, var_window_id, var_target_window_id);
case 12:
Encoder::decode(buf, decoded_msg_len, var_window_id);
Encoder::decode(buf, decoded_msg_len, var_title);
return new MenuBarCreateMenuMessage(secret_key, var_window_id, var_title);
case 13:
Encoder::decode(buf, decoded_msg_len, var_status);
Encoder::decode(buf, decoded_msg_len, var_menu_id);
return new MenuBarCreateMenuMessageReply(secret_key, var_status, var_menu_id);
case 14:
Encoder::decode(buf, decoded_msg_len, var_window_id);
Encoder::decode(buf, decoded_msg_len, var_menu_id);
Encoder::decode(buf, decoded_msg_len, var_item_id);
Encoder::decode(buf, decoded_msg_len, var_title);
return new MenuBarCreateItemMessage(secret_key, var_window_id, var_menu_id, var_item_id, var_title);
case 15:
Encoder::decode(buf, decoded_msg_len, var_status);
return new MenuBarCreateItemMessageReply(secret_key, var_status);
case 16:
Encoder::decode(buf, decoded_msg_len, var_window_id);
Encoder::decode(buf, decoded_msg_len, var_point);
Encoder::decode(buf, decoded_msg_len, var_data);
return new PopupShowMenuMessage(secret_key, var_window_id, var_point, var_data);
case 17:
Encoder::decode(buf, decoded_msg_len, var_status);
Encoder::decode(buf, decoded_msg_len, var_menu_id);
return new PopupShowMenuMessageReply(secret_key, var_status, var_menu_id);
default:
decoded_msg_len = saved_dml;
return nullptr;
}
}
std::unique_ptr<Message> handle(Message& msg) override
{
if (magic() != msg.decoder_magic()) {
return nullptr;
}
switch (msg.id()) {
case 1:
return handle(static_cast<GreetMessage&>(msg));
case 3:
return handle(static_cast<CreateWindowMessage&>(msg));
case 5:
return handle(static_cast<DestroyWindowMessage&>(msg));
case 7:
return handle(static_cast<SetBufferMessage&>(msg));
case 8:
return handle(static_cast<SetBarStyleMessage&>(msg));
case 9:
return handle(static_cast<SetTitleMessage&>(msg));
case 10:
return handle(static_cast<InvalidateMessage&>(msg));
case 11:
return handle(static_cast<AskBringToFrontMessage&>(msg));
case 12:
return handle(static_cast<MenuBarCreateMenuMessage&>(msg));
case 14:
return handle(static_cast<MenuBarCreateItemMessage&>(msg));
case 16:
return handle(static_cast<PopupShowMenuMessage&>(msg));
default:
return nullptr;
}
}
virtual std::unique_ptr<Message> handle(GreetMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(CreateWindowMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(DestroyWindowMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(SetBufferMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(SetBarStyleMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(SetTitleMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(InvalidateMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(AskBringToFrontMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(MenuBarCreateMenuMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(MenuBarCreateItemMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(PopupShowMenuMessage& msg) { return nullptr; }
};
class MouseMoveMessage : public Message {
public:
MouseMoveMessage(message_key_t key, int win_id, uint32_t x, uint32_t y)
: m_key(key)
, m_win_id(win_id)
, m_x(x)
, m_y(y)
{
}
int id() const override { return 1; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 737; }
int win_id() const { return m_win_id; }
uint32_t x() const { return m_x; }
uint32_t y() const { return m_y; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_win_id);
Encoder::append(buffer, m_x);
Encoder::append(buffer, m_y);
return buffer;
}
private:
message_key_t m_key;
int m_win_id;
uint32_t m_x;
uint32_t m_y;
};
class MouseActionMessage : public Message {
public:
MouseActionMessage(message_key_t key, int win_id, int type, uint32_t x, uint32_t y)
: m_key(key)
, m_win_id(win_id)
, m_type(type)
, m_x(x)
, m_y(y)
{
}
int id() const override { return 2; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 737; }
int win_id() const { return m_win_id; }
int type() const { return m_type; }
uint32_t x() const { return m_x; }
uint32_t y() const { return m_y; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_win_id);
Encoder::append(buffer, m_type);
Encoder::append(buffer, m_x);
Encoder::append(buffer, m_y);
return buffer;
}
private:
message_key_t m_key;
int m_win_id;
int m_type;
uint32_t m_x;
uint32_t m_y;
};
class MouseLeaveMessage : public Message {
public:
MouseLeaveMessage(message_key_t key, int win_id, uint32_t x, uint32_t y)
: m_key(key)
, m_win_id(win_id)
, m_x(x)
, m_y(y)
{
}
int id() const override { return 3; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 737; }
int win_id() const { return m_win_id; }
uint32_t x() const { return m_x; }
uint32_t y() const { return m_y; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_win_id);
Encoder::append(buffer, m_x);
Encoder::append(buffer, m_y);
return buffer;
}
private:
message_key_t m_key;
int m_win_id;
uint32_t m_x;
uint32_t m_y;
};
class MouseWheelMessage : public Message {
public:
MouseWheelMessage(message_key_t key, int win_id, int wheel_data, uint32_t x, uint32_t y)
: m_key(key)
, m_win_id(win_id)
, m_wheel_data(wheel_data)
, m_x(x)
, m_y(y)
{
}
int id() const override { return 4; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 737; }
int win_id() const { return m_win_id; }
int wheel_data() const { return m_wheel_data; }
uint32_t x() const { return m_x; }
uint32_t y() const { return m_y; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_win_id);
Encoder::append(buffer, m_wheel_data);
Encoder::append(buffer, m_x);
Encoder::append(buffer, m_y);
return buffer;
}
private:
message_key_t m_key;
int m_win_id;
int m_wheel_data;
uint32_t m_x;
uint32_t m_y;
};
class KeyboardMessage : public Message {
public:
KeyboardMessage(message_key_t key, int win_id, uint32_t kbd_key)
: m_key(key)
, m_win_id(win_id)
, m_kbd_key(kbd_key)
{
}
int id() const override { return 5; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 737; }
int win_id() const { return m_win_id; }
uint32_t kbd_key() const { return m_kbd_key; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_win_id);
Encoder::append(buffer, m_kbd_key);
return buffer;
}
private:
message_key_t m_key;
int m_win_id;
uint32_t m_kbd_key;
};
class DisplayMessage : public Message {
public:
DisplayMessage(message_key_t key, LG::Rect rect)
: m_key(key)
, m_rect(rect)
{
}
int id() const override { return 6; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 737; }
LG::Rect& rect() { return m_rect; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_rect);
return buffer;
}
private:
message_key_t m_key;
LG::Rect m_rect;
};
class WindowCloseRequestMessage : public Message {
public:
WindowCloseRequestMessage(message_key_t key, int win_id)
: m_key(key)
, m_win_id(win_id)
{
}
int id() const override { return 7; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 737; }
int win_id() const { return m_win_id; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_win_id);
return buffer;
}
private:
message_key_t m_key;
int m_win_id;
};
class ResizeMessage : public Message {
public:
ResizeMessage(message_key_t key, int win_id, LG::Rect rect)
: m_key(key)
, m_win_id(win_id)
, m_rect(rect)
{
}
int id() const override { return 8; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 737; }
int win_id() const { return m_win_id; }
LG::Rect& rect() { return m_rect; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_win_id);
Encoder::append(buffer, m_rect);
return buffer;
}
private:
message_key_t m_key;
int m_win_id;
LG::Rect m_rect;
};
class DisconnectMessage : public Message {
public:
DisconnectMessage(message_key_t key, int reason)
: m_key(key)
, m_reason(reason)
{
}
int id() const override { return 9; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 737; }
int reason() const { return m_reason; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_reason);
return buffer;
}
private:
message_key_t m_key;
int m_reason;
};
class MenuBarActionMessage : public Message {
public:
MenuBarActionMessage(message_key_t key, int win_id, int menu_id, int item_id)
: m_key(key)
, m_win_id(win_id)
, m_menu_id(menu_id)
, m_item_id(item_id)
{
}
int id() const override { return 10; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 737; }
int win_id() const { return m_win_id; }
int menu_id() const { return m_menu_id; }
int item_id() const { return m_item_id; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_win_id);
Encoder::append(buffer, m_menu_id);
Encoder::append(buffer, m_item_id);
return buffer;
}
private:
message_key_t m_key;
int m_win_id;
int m_menu_id;
int m_item_id;
};
class PopupActionMessage : public Message {
public:
PopupActionMessage(message_key_t key, int win_id, int menu_id, int item_id)
: m_key(key)
, m_win_id(win_id)
, m_menu_id(menu_id)
, m_item_id(item_id)
{
}
int id() const override { return 11; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 737; }
int win_id() const { return m_win_id; }
int menu_id() const { return m_menu_id; }
int item_id() const { return m_item_id; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_win_id);
Encoder::append(buffer, m_menu_id);
Encoder::append(buffer, m_item_id);
return buffer;
}
private:
message_key_t m_key;
int m_win_id;
int m_menu_id;
int m_item_id;
};
class NotifyWindowCreateMessage : public Message {
public:
NotifyWindowCreateMessage(message_key_t key, int win_id, LIPC::StringEncoder bundle_id, LIPC::StringEncoder icon_path, int changed_window_id, int changed_window_type)
: m_key(key)
, m_win_id(win_id)
, m_bundle_id(bundle_id)
, m_icon_path(icon_path)
, m_changed_window_id(changed_window_id)
, m_changed_window_type(changed_window_type)
{
}
int id() const override { return 12; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 737; }
int win_id() const { return m_win_id; }
LIPC::StringEncoder& bundle_id() { return m_bundle_id; }
LIPC::StringEncoder& icon_path() { return m_icon_path; }
int changed_window_id() const { return m_changed_window_id; }
int changed_window_type() const { return m_changed_window_type; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_win_id);
Encoder::append(buffer, m_bundle_id);
Encoder::append(buffer, m_icon_path);
Encoder::append(buffer, m_changed_window_id);
Encoder::append(buffer, m_changed_window_type);
return buffer;
}
private:
message_key_t m_key;
int m_win_id;
LIPC::StringEncoder m_bundle_id;
LIPC::StringEncoder m_icon_path;
int m_changed_window_id;
int m_changed_window_type;
};
class NotifyWindowStatusChangedMessage : public Message {
public:
NotifyWindowStatusChangedMessage(message_key_t key, int win_id, int changed_window_id, int type)
: m_key(key)
, m_win_id(win_id)
, m_changed_window_id(changed_window_id)
, m_type(type)
{
}
int id() const override { return 13; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 737; }
int win_id() const { return m_win_id; }
int changed_window_id() const { return m_changed_window_id; }
int type() const { return m_type; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_win_id);
Encoder::append(buffer, m_changed_window_id);
Encoder::append(buffer, m_type);
return buffer;
}
private:
message_key_t m_key;
int m_win_id;
int m_changed_window_id;
int m_type;
};
class NotifyWindowTitleChangedMessage : public Message {
public:
NotifyWindowTitleChangedMessage(message_key_t key, int win_id, int changed_window_id, LIPC::StringEncoder title)
: m_key(key)
, m_win_id(win_id)
, m_changed_window_id(changed_window_id)
, m_title(title)
{
}
int id() const override { return 14; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 737; }
int win_id() const { return m_win_id; }
int changed_window_id() const { return m_changed_window_id; }
LIPC::StringEncoder& title() { return m_title; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_win_id);
Encoder::append(buffer, m_changed_window_id);
Encoder::append(buffer, m_title);
return buffer;
}
private:
message_key_t m_key;
int m_win_id;
int m_changed_window_id;
LIPC::StringEncoder m_title;
};
class NotifyWindowIconChangedMessage : public Message {
public:
NotifyWindowIconChangedMessage(message_key_t key, int win_id, int changed_window_id, LIPC::StringEncoder icon_path)
: m_key(key)
, m_win_id(win_id)
, m_changed_window_id(changed_window_id)
, m_icon_path(icon_path)
{
}
int id() const override { return 15; }
int reply_id() const override { return -1; }
int key() const override { return m_key; }
int decoder_magic() const override { return 737; }
int win_id() const { return m_win_id; }
int changed_window_id() const { return m_changed_window_id; }
LIPC::StringEncoder& icon_path() { return m_icon_path; }
EncodedMessage encode() const override
{
EncodedMessage buffer;
Encoder::append(buffer, decoder_magic());
Encoder::append(buffer, id());
Encoder::append(buffer, key());
Encoder::append(buffer, m_win_id);
Encoder::append(buffer, m_changed_window_id);
Encoder::append(buffer, m_icon_path);
return buffer;
}
private:
message_key_t m_key;
int m_win_id;
int m_changed_window_id;
LIPC::StringEncoder m_icon_path;
};
class BaseWindowClientDecoder : public MessageDecoder {
public:
BaseWindowClientDecoder() { }
int magic() const { return 737; }
std::unique_ptr<Message> decode(const char* buf, size_t size, size_t& decoded_msg_len) override
{
int msg_id, decoder_magic;
size_t saved_dml = decoded_msg_len;
Encoder::decode(buf, decoded_msg_len, decoder_magic);
Encoder::decode(buf, decoded_msg_len, msg_id);
if (magic() != decoder_magic) {
decoded_msg_len = saved_dml;
return nullptr;
}
message_key_t secret_key;
Encoder::decode(buf, decoded_msg_len, secret_key);
int var_win_id;
uint32_t var_x;
uint32_t var_y;
int var_type;
int var_wheel_data;
uint32_t var_kbd_key;
LG::Rect var_rect;
int var_reason;
int var_menu_id;
int var_item_id;
LIPC::StringEncoder var_bundle_id;
LIPC::StringEncoder var_icon_path;
int var_changed_window_id;
int var_changed_window_type;
LIPC::StringEncoder var_title;
switch (msg_id) {
case 1:
Encoder::decode(buf, decoded_msg_len, var_win_id);
Encoder::decode(buf, decoded_msg_len, var_x);
Encoder::decode(buf, decoded_msg_len, var_y);
return new MouseMoveMessage(secret_key, var_win_id, var_x, var_y);
case 2:
Encoder::decode(buf, decoded_msg_len, var_win_id);
Encoder::decode(buf, decoded_msg_len, var_type);
Encoder::decode(buf, decoded_msg_len, var_x);
Encoder::decode(buf, decoded_msg_len, var_y);
return new MouseActionMessage(secret_key, var_win_id, var_type, var_x, var_y);
case 3:
Encoder::decode(buf, decoded_msg_len, var_win_id);
Encoder::decode(buf, decoded_msg_len, var_x);
Encoder::decode(buf, decoded_msg_len, var_y);
return new MouseLeaveMessage(secret_key, var_win_id, var_x, var_y);
case 4:
Encoder::decode(buf, decoded_msg_len, var_win_id);
Encoder::decode(buf, decoded_msg_len, var_wheel_data);
Encoder::decode(buf, decoded_msg_len, var_x);
Encoder::decode(buf, decoded_msg_len, var_y);
return new MouseWheelMessage(secret_key, var_win_id, var_wheel_data, var_x, var_y);
case 5:
Encoder::decode(buf, decoded_msg_len, var_win_id);
Encoder::decode(buf, decoded_msg_len, var_kbd_key);
return new KeyboardMessage(secret_key, var_win_id, var_kbd_key);
case 6:
Encoder::decode(buf, decoded_msg_len, var_rect);
return new DisplayMessage(secret_key, var_rect);
case 7:
Encoder::decode(buf, decoded_msg_len, var_win_id);
return new WindowCloseRequestMessage(secret_key, var_win_id);
case 8:
Encoder::decode(buf, decoded_msg_len, var_win_id);
Encoder::decode(buf, decoded_msg_len, var_rect);
return new ResizeMessage(secret_key, var_win_id, var_rect);
case 9:
Encoder::decode(buf, decoded_msg_len, var_reason);
return new DisconnectMessage(secret_key, var_reason);
case 10:
Encoder::decode(buf, decoded_msg_len, var_win_id);
Encoder::decode(buf, decoded_msg_len, var_menu_id);
Encoder::decode(buf, decoded_msg_len, var_item_id);
return new MenuBarActionMessage(secret_key, var_win_id, var_menu_id, var_item_id);
case 11:
Encoder::decode(buf, decoded_msg_len, var_win_id);
Encoder::decode(buf, decoded_msg_len, var_menu_id);
Encoder::decode(buf, decoded_msg_len, var_item_id);
return new PopupActionMessage(secret_key, var_win_id, var_menu_id, var_item_id);
case 12:
Encoder::decode(buf, decoded_msg_len, var_win_id);
Encoder::decode(buf, decoded_msg_len, var_bundle_id);
Encoder::decode(buf, decoded_msg_len, var_icon_path);
Encoder::decode(buf, decoded_msg_len, var_changed_window_id);
Encoder::decode(buf, decoded_msg_len, var_changed_window_type);
return new NotifyWindowCreateMessage(secret_key, var_win_id, var_bundle_id, var_icon_path, var_changed_window_id, var_changed_window_type);
case 13:
Encoder::decode(buf, decoded_msg_len, var_win_id);
Encoder::decode(buf, decoded_msg_len, var_changed_window_id);
Encoder::decode(buf, decoded_msg_len, var_type);
return new NotifyWindowStatusChangedMessage(secret_key, var_win_id, var_changed_window_id, var_type);
case 14:
Encoder::decode(buf, decoded_msg_len, var_win_id);
Encoder::decode(buf, decoded_msg_len, var_changed_window_id);
Encoder::decode(buf, decoded_msg_len, var_title);
return new NotifyWindowTitleChangedMessage(secret_key, var_win_id, var_changed_window_id, var_title);
case 15:
Encoder::decode(buf, decoded_msg_len, var_win_id);
Encoder::decode(buf, decoded_msg_len, var_changed_window_id);
Encoder::decode(buf, decoded_msg_len, var_icon_path);
return new NotifyWindowIconChangedMessage(secret_key, var_win_id, var_changed_window_id, var_icon_path);
default:
decoded_msg_len = saved_dml;
return nullptr;
}
}
std::unique_ptr<Message> handle(Message& msg) override
{
if (magic() != msg.decoder_magic()) {
return nullptr;
}
switch (msg.id()) {
case 1:
return handle(static_cast<MouseMoveMessage&>(msg));
case 2:
return handle(static_cast<MouseActionMessage&>(msg));
case 3:
return handle(static_cast<MouseLeaveMessage&>(msg));
case 4:
return handle(static_cast<MouseWheelMessage&>(msg));
case 5:
return handle(static_cast<KeyboardMessage&>(msg));
case 6:
return handle(static_cast<DisplayMessage&>(msg));
case 7:
return handle(static_cast<WindowCloseRequestMessage&>(msg));
case 8:
return handle(static_cast<ResizeMessage&>(msg));
case 9:
return handle(static_cast<DisconnectMessage&>(msg));
case 10:
return handle(static_cast<MenuBarActionMessage&>(msg));
case 11:
return handle(static_cast<PopupActionMessage&>(msg));
case 12:
return handle(static_cast<NotifyWindowCreateMessage&>(msg));
case 13:
return handle(static_cast<NotifyWindowStatusChangedMessage&>(msg));
case 14:
return handle(static_cast<NotifyWindowTitleChangedMessage&>(msg));
case 15:
return handle(static_cast<NotifyWindowIconChangedMessage&>(msg));
default:
return nullptr;
}
}
virtual std::unique_ptr<Message> handle(MouseMoveMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(MouseActionMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(MouseLeaveMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(MouseWheelMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(KeyboardMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(DisplayMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(WindowCloseRequestMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(ResizeMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(DisconnectMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(MenuBarActionMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(PopupActionMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(NotifyWindowCreateMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(NotifyWindowStatusChangedMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(NotifyWindowTitleChangedMessage& msg) { return nullptr; }
virtual std::unique_ptr<Message> handle(NotifyWindowIconChangedMessage& msg) { return nullptr; }
};