Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/neutrinolabs/ulalaca-xrdp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGyuhwan Park <unstabler@unstabler.pl>2022-05-23 14:16:40 +0300
committerGyuhwan Park <unstabler@unstabler.pl>2022-05-23 14:16:40 +0300
commit3869c5880bef0b15e75e111002960af5af8864c9 (patch)
treee46a030f3c8ef8bf0506d0f6b73b9167c86a3007
parentcc869b8d5898bcf0772b31392bf6aa4a80f899de (diff)
refactor(ipc): use message header from ulalacacore instead
-rw-r--r--ProjectionContext.hpp2
-rw-r--r--ProjectionThread.cpp46
-rw-r--r--ProjectionThread.hpp9
-rw-r--r--UlalacaMessages.hpp174
4 files changed, 28 insertions, 203 deletions
diff --git a/ProjectionContext.hpp b/ProjectionContext.hpp
index 9a957b6..16ca034 100644
--- a/ProjectionContext.hpp
+++ b/ProjectionContext.hpp
@@ -9,7 +9,7 @@
#include <utility>
-#include "UlalacaMessages.hpp"
+#include "messages/projector.h"
class ProjectionContext {
public:
diff --git a/ProjectionThread.cpp b/ProjectionThread.cpp
index 6828f49..d4a07bc 100644
--- a/ProjectionThread.cpp
+++ b/ProjectionThread.cpp
@@ -39,20 +39,18 @@ void ProjectionThread::stop() {
}
void ProjectionThread::handleEvent(XrdpEvent &event) {
- using namespace projector;
-
if (event.isKeyEvent()) {
auto keycode = event.param3;
auto cgKeycode = rdpKeycodeToCGKeycode(keycode);
auto eventType = event.type == XrdpEvent::KEY_DOWN ?
- KeyboardEvent::TYPE_KEYDOWN :
- KeyboardEvent::TYPE_KEYUP;
+ KEY_EVENT_TYPE_KEYDOWN :
+ KEY_EVENT_TYPE_KEYUP;
if (cgKeycode == -1) {
return;
}
- writeMessage(MessageType::OUT_KEYBOARD_EVENT, KeyboardEvent {
+ writeMessage(OUT_KEYBOARD_EVENT, KeyboardEvent {
eventType, (uint32_t) cgKeycode, 0
});
} else if (event.type == XrdpEvent::KEY_SYNCHRONIZE_LOCK) {
@@ -65,7 +63,7 @@ void ProjectionThread::handleEvent(XrdpEvent &event) {
uint16_t posX = event.param1;
uint16_t posY = event.param2;
- writeMessage(MessageType::OUT_MOUSE_MOVE_EVENT, MouseMoveEvent {
+ writeMessage(OUT_MOUSE_MOVE_EVENT, MouseMoveEvent {
posX, posY,
0
});
@@ -73,17 +71,17 @@ void ProjectionThread::handleEvent(XrdpEvent &event) {
}
case XrdpEvent::MOUSE_BUTTON_LEFT_DOWN: {
- writeMessage(MessageType::OUT_MOUSE_BUTTON_EVENT, MouseButtonEvent {
- MouseButtonEvent::TYPE_MOUSEDOWN,
- MouseButtonEvent::BUTTON_LEFT,
+ writeMessage(OUT_MOUSE_BUTTON_EVENT, MouseButtonEvent {
+ MOUSE_EVENT_TYPE_MOUSEDOWN,
+ MOUSE_EVENT_BUTTON_LEFT,
0
});
return;
}
case XrdpEvent::MOUSE_BUTTON_LEFT_UP: {
- writeMessage(MessageType::OUT_MOUSE_BUTTON_EVENT, MouseButtonEvent {
- MouseButtonEvent::TYPE_MOUSEUP,
- MouseButtonEvent::BUTTON_LEFT,
+ writeMessage(OUT_MOUSE_BUTTON_EVENT, MouseButtonEvent {
+ MOUSE_EVENT_TYPE_MOUSEUP,
+ MOUSE_EVENT_BUTTON_LEFT,
0
});
return;
@@ -91,17 +89,17 @@ void ProjectionThread::handleEvent(XrdpEvent &event) {
case XrdpEvent::MOUSE_BUTTON_RIGHT_DOWN: {
- writeMessage(MessageType::OUT_MOUSE_BUTTON_EVENT, MouseButtonEvent {
- MouseButtonEvent::TYPE_MOUSEDOWN,
- MouseButtonEvent::BUTTON_RIGHT,
+ writeMessage(OUT_MOUSE_BUTTON_EVENT, MouseButtonEvent {
+ MOUSE_EVENT_TYPE_MOUSEDOWN,
+ MOUSE_EVENT_BUTTON_RIGHT,
0
});
return;
}
case XrdpEvent::MOUSE_BUTTON_RIGHT_UP: {
- writeMessage(MessageType::OUT_MOUSE_BUTTON_EVENT, MouseButtonEvent {
- MouseButtonEvent::TYPE_MOUSEUP,
- MouseButtonEvent::BUTTON_RIGHT,
+ writeMessage(OUT_MOUSE_BUTTON_EVENT, MouseButtonEvent {
+ MOUSE_EVENT_TYPE_MOUSEUP,
+ MOUSE_EVENT_BUTTON_RIGHT,
0
});
return;
@@ -149,15 +147,15 @@ void ProjectionThread::mainLoop() {
auto header = nextHeader();
switch (header->messageType) {
- case projector::IN_SCREEN_UPDATE_EVENT: {
- auto updateEvent = read<projector::ScreenUpdateEvent>(header->length);
+ case IN_SCREEN_UPDATE_EVENT: {
+ auto updateEvent = read<ScreenUpdateEvent>(header->length);
LOG(LOG_LEVEL_DEBUG, "mainLoop(): adding dirty rect");
_xrdpUlalaca.addDirtyRect(updateEvent->rect);
continue;
}
- case projector::IN_SCREEN_COMMIT_UPDATE: {
- auto commitUpdate = read<projector::ScreenCommitUpdate>(header->length);
+ case IN_SCREEN_COMMIT_UPDATE: {
+ auto commitUpdate = read<ScreenCommitUpdate>(header->length);
auto bitmap = read<uint8_t>(commitUpdate->bitmapLength);
LOG(LOG_LEVEL_DEBUG, "mainLoop(): commiting update");
@@ -238,8 +236,8 @@ void ProjectionThread::ioLoop() {
}
}
-std::unique_ptr<projector::MessageHeader, MallocFreeDeleter> ProjectionThread::nextHeader() {
- return std::move(read<projector::MessageHeader>(sizeof(projector::MessageHeader)));
+std::unique_ptr<ProjectorMessageHeader, MallocFreeDeleter> ProjectionThread::nextHeader() {
+ return std::move(read<ProjectorMessageHeader>(sizeof(ProjectorMessageHeader)));
}
void ProjectionThread::write(const void *pointer, size_t size) {
diff --git a/ProjectionThread.hpp b/ProjectionThread.hpp
index fe25eb3..fee749e 100644
--- a/ProjectionThread.hpp
+++ b/ProjectionThread.hpp
@@ -12,7 +12,8 @@
#include "UnixSocket.hpp"
-#include "UlalacaMessages.hpp"
+#include "messages/projector.h"
+
#include "ulalaca.hpp"
using MallocFreeDeleter = std::function<void(void *)>;
@@ -32,7 +33,7 @@ private:
void mainLoop();
void ioLoop();
- std::unique_ptr<projector::MessageHeader, MallocFreeDeleter> nextHeader();
+ std::unique_ptr<ProjectorMessageHeader, MallocFreeDeleter> nextHeader();
template<typename T>
std::unique_ptr<T, MallocFreeDeleter> read(size_t size) {
@@ -54,8 +55,8 @@ private:
void write(const void *pointer, size_t size);
template <typename T>
- void writeMessage(projector::MessageType messageType, T message) {
- auto header = projector::MessageHeader {
+ void writeMessage(uint16_t messageType, T message) {
+ auto header = ProjectorMessageHeader {
(uint16_t) messageType,
0, 0,
0,
diff --git a/UlalacaMessages.hpp b/UlalacaMessages.hpp
deleted file mode 100644
index 2b117ca..0000000
--- a/UlalacaMessages.hpp
+++ /dev/null
@@ -1,174 +0,0 @@
-//
-// Created by Gyuhwan Park on 2022/05/06.
-//
-
-#ifndef XRDP_ULALACAMESSAGES_HPP
-#define XRDP_ULALACAMESSAGES_HPP
-
-#include <cstdint>
-
-#define FIXME_MARK_AS_PACKED_STRUCT __attribute__ ((packed))
-
-struct Rect {
- short x;
- short y;
- short width;
- short height;
-} __attribute__ ((packed));
-
-namespace broker {
- enum MessageType: uint16_t {
- IN_SESSION_READY = 0xA100,
- IN_REQUEST_REJECTION = 0xA101,
-
- OUT_REQUEST_SESSION = 0xA011,
- };
-
- struct MessageHeader {
- uint32_t version;
-
- uint16_t messageType;
- uint64_t timestamp;
-
- uint64_t length;
- } FIXME_MARK_AS_PACKED_STRUCT;
-
- /**
- * incoming message
- */
- struct SessionReady {
- uint64_t sessionId;
- bool isLoginSession;
-
- char path[1024];
- } FIXME_MARK_AS_PACKED_STRUCT;
-
- struct RequestRejection {
- static const uint8_t REASON_INTERNAL_ERROR = 0;
- static const uint8_t REASON_AUTHENTICATION_FAILED = 1;
- static const uint8_t REASON_SESSION_NOT_AVAILABLE = 2;
- static const uint8_t REASON_INCOMPATIBLE_VERSION = 3;
-
- uint8_t reason;
- } FIXME_MARK_AS_PACKED_STRUCT;
-
- struct RequestSession {
- char username[64];
- char password[256];
- } FIXME_MARK_AS_PACKED_STRUCT;
-}
-
-namespace projector {
-
- enum MessageType: uint16_t {
- IN_SCREEN_UPDATE_EVENT = 0x0101,
- IN_SCREEN_COMMIT_UPDATE = 0x0102,
-
- OUT_SCREEN_UPDATE_REQUEST = 0x0201,
-
- OUT_KEYBOARD_EVENT = 0x0311,
-
- OUT_MOUSE_MOVE_EVENT = 0x0321,
- OUT_MOUSE_BUTTON_EVENT = 0x0322,
- OUT_MOUSE_WHEEL_EVENT = 0x0323,
- };
-
- struct MessageHeader {
- uint16_t messageType;
-
- uint64_t id;
- uint64_t replyTo;
-
- uint64_t timestamp;
-
- uint64_t length;
- } FIXME_MARK_AS_PACKED_STRUCT;
-
- /**
- * incoming message
- */
- struct ScreenUpdateEvent {
- uint8_t type;
-
- Rect rect;
- } FIXME_MARK_AS_PACKED_STRUCT;
-
- struct ScreenCommitUpdate {
- Rect screenRect;
-
- uint64_t bitmapLength;
- } FIXME_MARK_AS_PACKED_STRUCT;
-
- struct ScreenUpdateRequest {
- static const uint8_t TYPE_ENTIRE_SCREEN = 0;
- static const uint8_t TYPE_PARTIAL = 1;
-
- uint8_t type;
-
- Rect rect;
- };
-
- struct KeyboardEvent {
- static const uint8_t TYPE_NOOP = 0;
- static const uint8_t TYPE_KEYUP = 1;
- static const uint8_t TYPE_KEYDOWN = 2;
-
- /**
- * force releases pressed keys
- */
- static const uint8_t TYPE_RESET = 4;
-
- static const uint16_t FLAG_IGNORE_TIMESTAMP_QUEUE = 0b00000001;
- static const uint16_t FLAG_EMIT_EVENT_USING_KARABINER = 0b00010000;
-
-
- uint8_t type;
- uint32_t keyCode;
-
- uint16_t flags;
- } FIXME_MARK_AS_PACKED_STRUCT;
-
- struct MouseMoveEvent {
- static const uint16_t FLAG_IGNORE_TIMESTAMP_QUEUE = 0b0001;
- static const uint16_t FLAG_EMIT_EVENT_USING_KARABINER = 0b00010000;
-
- uint16_t x;
- uint16_t y;
-
- uint16_t flags;
- } FIXME_MARK_AS_PACKED_STRUCT;
-
- struct MouseButtonEvent {
- static const uint8_t TYPE_NOOP = 0;
- static const uint8_t TYPE_MOUSEUP = 1;
- static const uint8_t TYPE_MOUSEDOWN = 2;
-
- static const uint8_t BUTTON_LEFT = 0;
- static const uint8_t BUTTON_RIGHT = 1;
- static const uint8_t BUTTON_MIDDLE = 2;
-
- static const uint16_t FLAG_IGNORE_TIMESTAMP_QUEUE = 0b0001;
- static const uint16_t FLAG_EMIT_EVENT_USING_KARABINER = 0b00010000;
-
- // ...
-
- uint8_t type;
- uint8_t button;
-
- uint16_t flags;
- } FIXME_MARK_AS_PACKED_STRUCT;
-
- struct MouseWheelEvent {
- static const uint16_t FLAG_IGNORE_TIMESTAMP_QUEUE = 0b0001;
- static const uint16_t FLAG_EMIT_EVENT_USING_KARABINER = 0b00010000;
-
- int32_t deltaX;
- int32_t deltaY;
-
- uint16_t flags;
- } FIXME_MARK_AS_PACKED_STRUCT;
-
-
-}
-
-#endif //XRDP_ULALACAMESSAGES_HPP