libfreerdp-utils: start migrating old eventing system
authorMarc-André Moreau <marcandre.moreau@gmail.com>
Thu, 28 Mar 2013 22:29:57 +0000 (18:29 -0400)
committerMarc-André Moreau <marcandre.moreau@gmail.com>
Thu, 28 Mar 2013 22:29:57 +0000 (18:29 -0400)
13 files changed:
channels/client/channels.c
channels/cliprdr/client/cliprdr_format.c
channels/cliprdr/client/cliprdr_main.c
channels/rail/client/rail_main.c
client/DirectFB/dfreerdp.c
client/Sample/freerdp.c
client/X11/xf_cliprdr.c
client/X11/xf_rail.c
client/X11/xfreerdp.c
include/freerdp/client/cliprdr.h
include/freerdp/message.h
include/freerdp/types.h
libfreerdp/utils/event.c

index 745ea96..0eccc1d 100644 (file)
@@ -1159,7 +1159,7 @@ int freerdp_channels_data(freerdp* instance, int channel_id, void* data, int dat
 static const char* event_class_to_name_table[] =
 {
        "rdpdbg",   /* RDP_EVENT_CLASS_DEBUG */
-       "cliprdr",  /* RDP_EVENT_CLASS_CLIPRDR */
+       "",  /* RDP_EVENT_CLASS_CLIPRDR */
        "tsmf",     /* RDP_EVENT_CLASS_TSMF */
        "rail",     /* RDP_EVENT_CLASS_RAIL */
        NULL
@@ -1174,11 +1174,30 @@ static const char* event_class_to_name_table[] =
 FREERDP_API int freerdp_channels_send_event(rdpChannels* channels, RDP_EVENT* event)
 {
        int index;
-       const char* name;
+       const char* name = NULL;
        struct channel_data* lchannel_data;
 
        name = event_class_to_name_table[event->event_class];
 
+       switch (GetMessageClass(event->id))
+       {
+               case DebugChannel_Class:
+                       name = "rdpdbg";
+                       break;
+
+               case CliprdrChannel_Class:
+                       name = "cliprdr";
+                       break;
+
+               case TsmfChannel_Class:
+                       name = "tsmf";
+                       break;
+
+               case RailChannel_Class:
+                       name = "rail";
+                       break;
+       }
+
        if (!name)
        {
                DEBUG_CHANNELS("unknown event_class %d", event->event_class);
index eae768e..41e4f4f 100644 (file)
@@ -202,8 +202,8 @@ void cliprdr_process_format_list(cliprdrPlugin* cliprdr, wStream* s, UINT32 data
        CLIPRDR_FORMAT_NAME* format_name;
        RDP_CB_FORMAT_LIST_EVENT* cb_event;
 
-       cb_event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
-               RDP_EVENT_TYPE_CB_FORMAT_LIST, NULL, NULL);
+       cb_event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+                       CliprdrChannel_FormatList, NULL, NULL);
 
        if (dataLen > 0)
        {
@@ -304,8 +304,8 @@ void cliprdr_process_format_data_request(cliprdrPlugin* cliprdr, wStream* s, UIN
 {
        RDP_CB_DATA_REQUEST_EVENT* cb_event;
 
-       cb_event = (RDP_CB_DATA_REQUEST_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
-               RDP_EVENT_TYPE_CB_DATA_REQUEST, NULL, NULL);
+       cb_event = (RDP_CB_DATA_REQUEST_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+                       CliprdrChannel_DataRequest, NULL, NULL);
 
        stream_read_UINT32(s, cb_event->format);
        svc_plugin_send_event((rdpSvcPlugin*) cliprdr, (RDP_EVENT*) cb_event);
@@ -345,14 +345,14 @@ void cliprdr_process_format_data_response(cliprdrPlugin* cliprdr, wStream* s, UI
 {
        RDP_CB_DATA_RESPONSE_EVENT* cb_event;
 
-       cb_event = (RDP_CB_DATA_RESPONSE_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
-               RDP_EVENT_TYPE_CB_DATA_RESPONSE, NULL, NULL);
+       cb_event = (RDP_CB_DATA_RESPONSE_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+                       CliprdrChannel_DataResponse, NULL, NULL);
 
        if (dataLen > 0)
        {
                cb_event->size = dataLen;
                cb_event->data = (BYTE*) malloc(dataLen);
-               memcpy(cb_event->data, stream_get_tail(s), dataLen);
+               CopyMemory(cb_event->data, stream_get_tail(s), dataLen);
        }
 
        svc_plugin_send_event((rdpSvcPlugin*) cliprdr, (RDP_EVENT*) cb_event);
index ae60267..b7b756f 100644 (file)
@@ -188,7 +188,8 @@ static void cliprdr_process_monitor_ready(cliprdrPlugin* cliprdr, wStream* s, UI
        if (cliprdr->received_caps)
                cliprdr_send_clip_caps(cliprdr);
 
-       event = freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR, RDP_EVENT_TYPE_CB_MONITOR_READY, NULL, NULL);
+       event = freerdp_event_new(CliprdrChannel_Class, CliprdrChannel_MonitorReady, NULL, NULL);
+
        svc_plugin_send_event((rdpSvcPlugin*) cliprdr, event);
 }
 
@@ -244,15 +245,15 @@ static void cliprdr_process_event(rdpSvcPlugin* plugin, RDP_EVENT* event)
 {
        switch (event->event_type)
        {
-               case RDP_EVENT_TYPE_CB_FORMAT_LIST:
+               case CliprdrChannel_FormatList:
                        cliprdr_process_format_list_event((cliprdrPlugin*) plugin, (RDP_CB_FORMAT_LIST_EVENT*) event);
                        break;
 
-               case RDP_EVENT_TYPE_CB_DATA_REQUEST:
+               case CliprdrChannel_DataRequest:
                        cliprdr_process_format_data_request_event((cliprdrPlugin*) plugin, (RDP_CB_DATA_REQUEST_EVENT*) event);
                        break;
 
-               case RDP_EVENT_TYPE_CB_DATA_RESPONSE:
+               case CliprdrChannel_DataResponse:
                        cliprdr_process_format_data_response_event((cliprdrPlugin*) plugin, (RDP_CB_DATA_RESPONSE_EVENT*) event);
                        break;
 
index 23bf601..16a6927 100644 (file)
@@ -51,10 +51,7 @@ void rail_send_channel_data(void* rail_object, void* data, size_t length)
 
 static void on_free_rail_channel_event(RDP_EVENT* event)
 {
-       if (event->event_class == RDP_EVENT_CLASS_RAIL)
-       {
-               rail_free_cloned_order(event->event_type, event->user_data);
-       }
+       rail_free_cloned_order(event->event_type, event->user_data);
 }
 
 void rail_send_channel_event(void* rail_object, UINT16 event_type, void* param)
index 1812cd3..3b5b253 100644 (file)
@@ -268,9 +268,9 @@ static void df_process_cb_monitor_ready_event(rdpChannels* channels, freerdp* in
        RDP_EVENT* event;
        RDP_CB_FORMAT_LIST_EVENT* format_list_event;
 
-       event = freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR, RDP_EVENT_TYPE_CB_FORMAT_LIST, NULL, NULL);
+       event = freerdp_event_new(CliprdrChannel_Class, CliprdrChannel_FormatList, NULL, NULL);
 
-       format_list_event = (RDP_CB_FORMAT_LIST_EVENT*)event;
+       format_list_event = (RDP_CB_FORMAT_LIST_EVENT*) event;
        format_list_event->num_formats = 0;
 
        freerdp_channels_send_event(channels, event);
@@ -284,11 +284,12 @@ static void df_process_channel_event(rdpChannels* channels, freerdp* instance)
 
        if (event)
        {
-               switch (event->event_type)
+               switch (GetMessageType(event->id))
                {
-                       case RDP_EVENT_TYPE_CB_MONITOR_READY:
+                       case CliprdrChannel_MonitorReady:
                                df_process_cb_monitor_ready_event(channels, instance);
                                break;
+
                        default:
                                printf("df_process_channel_event: unknown event type %d\n", event->event_type);
                                break;
@@ -319,8 +320,8 @@ int dfreerdp_run(freerdp* instance)
        dfContext* context;
        rdpChannels* channels;
 
-       memset(rfds, 0, sizeof(rfds));
-       memset(wfds, 0, sizeof(wfds));
+       ZeroMemory(rfds, sizeof(rfds));
+       ZeroMemory(wfds, sizeof(wfds));
 
        if (!freerdp_connect(instance))
                return 0;
index 11155c2..34bbb31 100644 (file)
@@ -103,7 +103,7 @@ void tf_process_cb_monitor_ready_event(rdpChannels* channels, freerdp* instance)
        RDP_EVENT* event;
        RDP_CB_FORMAT_LIST_EVENT* format_list_event;
 
-       event = freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR, RDP_EVENT_TYPE_CB_FORMAT_LIST, NULL, NULL);
+       event = freerdp_event_new(CliprdrChannel_Class, CliprdrChannel_FormatList, NULL, NULL);
 
        format_list_event = (RDP_CB_FORMAT_LIST_EVENT*) event;
        format_list_event->num_formats = 0;
index 78299cf..bc11d0a 100644 (file)
@@ -329,8 +329,8 @@ static void xf_cliprdr_send_raw_format_list(xfInfo* xfi)
        }
        DEBUG_X11_CLIPRDR("format=%d len=%d bytes_left=%d", format, (int) length, (int) bytes_left);
 
-       event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
-               RDP_EVENT_TYPE_CB_FORMAT_LIST, NULL, NULL);
+       event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+                       CliprdrChannel_FormatList, NULL, NULL);
 
        event->raw_format_data = (BYTE*) malloc(length);
        memcpy(event->raw_format_data, format_data, length);
@@ -345,8 +345,8 @@ static void xf_cliprdr_send_null_format_list(xfInfo* xfi)
        RDP_CB_FORMAT_LIST_EVENT* event;
        clipboardContext* cb = (clipboardContext*) xfi->clipboard_context;
 
-       event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
-               RDP_EVENT_TYPE_CB_FORMAT_LIST, NULL, NULL);
+       event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+                       CliprdrChannel_FormatList, NULL, NULL);
 
        event->num_formats = 0;
 
@@ -359,8 +359,8 @@ static void xf_cliprdr_send_supported_format_list(xfInfo* xfi)
        RDP_CB_FORMAT_LIST_EVENT* event;
        clipboardContext* cb = (clipboardContext*) xfi->clipboard_context;
 
-       event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
-               RDP_EVENT_TYPE_CB_FORMAT_LIST, NULL, NULL);
+       event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+                       CliprdrChannel_FormatList, NULL, NULL);
 
        event->formats = (UINT32*) malloc(sizeof(UINT32) * cb->num_format_mappings);
        event->num_formats = cb->num_format_mappings;
@@ -396,8 +396,8 @@ static void xf_cliprdr_send_data_request(xfInfo* xfi, UINT32 format)
        RDP_CB_DATA_REQUEST_EVENT* event;
        clipboardContext* cb = (clipboardContext*) xfi->clipboard_context;
 
-       event = (RDP_CB_DATA_REQUEST_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
-               RDP_EVENT_TYPE_CB_DATA_REQUEST, NULL, NULL);
+       event = (RDP_CB_DATA_REQUEST_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+                       CliprdrChannel_DataRequest, NULL, NULL);
 
        event->format = format;
 
@@ -409,8 +409,8 @@ static void xf_cliprdr_send_data_response(xfInfo* xfi, BYTE* data, int size)
        RDP_CB_DATA_RESPONSE_EVENT* event;
        clipboardContext* cb = (clipboardContext*) xfi->clipboard_context;
 
-       event = (RDP_CB_DATA_RESPONSE_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
-               RDP_EVENT_TYPE_CB_DATA_RESPONSE, NULL, NULL);
+       event = (RDP_CB_DATA_RESPONSE_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+                       CliprdrChannel_DataResponse, NULL, NULL);
 
        event->data = data;
        event->size = size;
@@ -481,19 +481,19 @@ static void xf_cliprdr_get_requested_targets(xfInfo* xfi)
        clipboardContext* cb = (clipboardContext*) xfi->clipboard_context;
 
        XGetWindowProperty(xfi->display, xfi->drawable, cb->property_atom,
-               0, 200, 0, XA_ATOM,
-               &atom, &format, &length, &bytes_left, &data);
+               0, 200, 0, XA_ATOM, &atom, &format, &length, &bytes_left, &data);
 
        DEBUG_X11_CLIPRDR("type=%d format=%d length=%d bytes_left=%d",
                (int) atom, format, (int) length, (int) bytes_left);
 
        if (length > 0)
        {
-               event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
-                       RDP_EVENT_TYPE_CB_FORMAT_LIST, NULL, NULL);
+               event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+                               CliprdrChannel_FormatList, NULL, NULL);
 
                event->formats = (UINT32*) malloc(sizeof(UINT32) * cb->num_format_mappings);
                num = 0;
+
                for (i = 0; i < length; i++)
                {
                        atom = ((Atom*) data)[i];
@@ -509,6 +509,7 @@ static void xf_cliprdr_get_requested_targets(xfInfo* xfi)
                                }
                        }
                }
+
                event->num_formats = num;
                XFree(data);
 
@@ -561,9 +562,10 @@ static BYTE* xf_cliprdr_process_requested_dib(BYTE* data, int* size)
        BYTE* outbuf;
 
        /* length should be at least BMP header (14) + sizeof(BITMAPINFOHEADER) */
+
        if (*size < 54)
        {
-               DEBUG_X11_CLIPRDR("bmp length %d too short", *capacity);
+               DEBUG_X11_CLIPRDR("bmp length %d too short", *size);
                return NULL;
        }
 
@@ -571,7 +573,7 @@ static BYTE* xf_cliprdr_process_requested_dib(BYTE* data, int* size)
        outbuf = (BYTE*) malloc(*size);
        ZeroMemory(outbuf, *size);
 
-       memcpy(outbuf, data + 14, *size);
+       CopyMemory(outbuf, data + 14, *size);
 
        return outbuf;
 }
@@ -904,9 +906,10 @@ static void xf_cliprdr_process_dib(clipboardContext* cb, BYTE* data, int size)
        UINT32 ncolors;
 
        /* size should be at least sizeof(BITMAPINFOHEADER) */
+
        if (size < 40)
        {
-               DEBUG_X11_CLIPRDR("dib size %d too short", capacity);
+               DEBUG_X11_CLIPRDR("dib size %d too short", size);
                return;
        }
 
@@ -967,9 +970,9 @@ static void xf_cliprdr_process_cb_data_response_event(xfInfo* xfi, RDP_CB_DATA_R
 {
        clipboardContext* cb = (clipboardContext*) xfi->clipboard_context;
 
-       DEBUG_X11_CLIPRDR("size=%d", event->capacity);
+       DEBUG_X11_CLIPRDR("size=%d", event->size);
 
-       if (cb->respond == NULL)
+       if (!cb->respond)
        {
                DEBUG_X11_CLIPRDR("unexpected data");
                return;
@@ -986,6 +989,7 @@ static void xf_cliprdr_process_cb_data_response_event(xfInfo* xfi, RDP_CB_DATA_R
                        free(cb->data);
                        cb->data = NULL;
                }
+
                switch (cb->data_format)
                {
                        case CB_FORMAT_RAW:
@@ -1029,26 +1033,26 @@ static void xf_cliprdr_process_cb_data_response_event(xfInfo* xfi, RDP_CB_DATA_R
 
 void xf_process_cliprdr_event(xfInfo* xfi, RDP_EVENT* event)
 {
-       switch (event->event_type)
+       switch (GetMessageType(event->id))
        {
-               case RDP_EVENT_TYPE_CB_MONITOR_READY:
+               case CliprdrChannel_MonitorReady:
                        xf_cliprdr_process_cb_monitor_ready_event(xfi);
                        break;
 
-               case RDP_EVENT_TYPE_CB_FORMAT_LIST:
+               case CliprdrChannel_FormatList:
                        xf_cliprdr_process_cb_format_list_event(xfi, (RDP_CB_FORMAT_LIST_EVENT*) event);
                        break;
 
-               case RDP_EVENT_TYPE_CB_DATA_REQUEST:
+               case CliprdrChannel_DataRequest:
                        xf_cliprdr_process_cb_data_request_event(xfi, (RDP_CB_DATA_REQUEST_EVENT*) event);
                        break;
 
-               case RDP_EVENT_TYPE_CB_DATA_RESPONSE:
+               case CliprdrChannel_DataResponse:
                        xf_cliprdr_process_cb_data_response_event(xfi, (RDP_CB_DATA_RESPONSE_EVENT*) event);
                        break;
 
                default:
-                       DEBUG_X11_CLIPRDR("unknown event type %d", event->event_type);
+                       DEBUG_X11_CLIPRDR("unknown event type %d", GetMessageType(event->id));
                        break;
        }
 }
index fe9f1c8..48e8591 100644 (file)
@@ -244,10 +244,7 @@ void xf_rail_register_callbacks(xfInfo* xfi, rdpRail* rail)
 
 static void xf_on_free_rail_client_event(RDP_EVENT* event)
 {
-       if (event->event_class == RDP_EVENT_CLASS_RAIL)
-       {
-               rail_free_cloned_order(event->event_type, event->user_data);
-       }
+       rail_free_cloned_order(event->event_type, event->user_data);
 }
 
 static void xf_send_rail_client_event(rdpChannels* channels, UINT16 event_type, void* param)
@@ -261,6 +258,7 @@ static void xf_send_rail_client_event(rdpChannels* channels, UINT16 event_type,
        {
                out_event = freerdp_event_new(RDP_EVENT_CLASS_RAIL, event_type,
                        xf_on_free_rail_client_event, payload);
+
                freerdp_channels_send_event(channels, out_event);
        }
 }
index 0752dde..81c43cb 100644 (file)
@@ -977,7 +977,7 @@ void xf_process_channel_event(rdpChannels* channels, freerdp* instance)
 
        if (event)
        {
-               switch (event->event_class)
+               switch (GetMessageClass(event->id))
                {
                        case RDP_EVENT_CLASS_RAIL:
                                xf_process_rail_event(xfi, channels, event);
@@ -987,7 +987,7 @@ void xf_process_channel_event(rdpChannels* channels, freerdp* instance)
                                xf_process_tsmf_event(xfi, event);
                                break;
 
-                       case RDP_EVENT_CLASS_CLIPRDR:
+                       case CliprdrChannel_Class:
                                xf_process_cliprdr_event(xfi, event);
                                break;
 
index c503de4..3153315 100644 (file)
 /**
  * Event Types
  */
-#define RDP_EVENT_TYPE_CB_MONITOR_READY                1
-#define RDP_EVENT_TYPE_CB_FORMAT_LIST          2
-#define RDP_EVENT_TYPE_CB_DATA_REQUEST         3
-#define RDP_EVENT_TYPE_CB_DATA_RESPONSE                4
 
 /**
  * Clipboard Formats
index 9eea250..504c68d 100644 (file)
 #ifndef FREERDP_CORE_MESSAGE_H
 #define FREERDP_CORE_MESSAGE_H
 
-#define GetMessageType(_id)    (_id & 0xFF)
-#define GetMessageClass(_id)   ((_id >> 16) & 0xFF)
+#define GetMessageType(_id)            (_id & 0xFF)
+#define GetMessageClass(_id)           ((_id >> 16) & 0xFF)
+
+#define GetMessageId(_class, _type)    ((_class << 16) | _type)
 
 #define MakeMessageId(_class, _type) \
        (((_class ##_Class) << 16) | (_class ## _ ## _type))
 #define FREERDP_INPUT_MOUSE_EVENT                              MakeMessageId(Input, MouseEvent)
 #define FREERDP_INPUT_EXTENDED_MOUSE_EVENT                     MakeMessageId(Input, ExtendedMouseEvent)
 
+/**
+ * Static Channel Message Queues
+ */
+
+#define FREERDP_CHANNEL_MESSAGE_QUEUE                          3
+
+#define Channel_Base                                           20
+
+/**
+ * Debug Channel
+ */
+
+#define DebugChannel_Class                                     (Channel_Base + 1)
+
+/**
+ * Clipboard Channel
+ */
+
+#define CliprdrChannel_Class                                   (Channel_Base + 2)
+
+#define CliprdrChannel_MonitorReady                            1
+#define CliprdrChannel_FormatList                              2
+#define CliprdrChannel_DataRequest                             3
+#define CliprdrChannel_DataResponse                            4
+
+#define FREERDP_CLIPRDR_CHANNEL_MONITOR_READY                  MakeMessageId(CliprdrChannel, MonitorReady)
+#define FREERDP_CLIPRDR_CHANNEL_FORMAT_LIST                    MakeMessageId(CliprdrChannel, FormatList)
+#define FREERDP_CLIPRDR_CHANNEL_DATA_REQUEST                   MakeMessageId(CliprdrChannel, DataRequest)
+#define FREERDP_CLIPRDR_CHANNEL_DATA_RESPONSE                  MakeMessageId(CliprdrChannel, DataResponse)
+
+/**
+ * Multimedia Redirection Channel
+ */
+
+#define TsmfChannel_Class                                      (Channel_Base + 3)
+
+#define TsmfChannel_VideoFrame                                 1
+#define TsmfChannel_Redraw                                     2
+
+#define FREERDP_TSMF_CHANNEL_VIDEO_FRAME                       MakeMessageId(TsmfChannel, VideoFrame)
+#define FREERDP_TSMF_CHANNEL_REDRAW                            MakeMessageId(TsmfChannel, Redraw)
+
+/**
+ * RemoteApp Channel
+ */
+
+#define RailChannel_Class                                      (Channel_Base + 4)
+
+#define RailChannel_ClientExecute                              1
+#define RailChannel_ClientActivate                             2
+#define RailChannel_ClientSystemParameters                     3
+#define RailChannel_ClientSystemCommand                                4
+#define RailChannel_ClientHandshake                            5
+#define RailChannel_ServerHandshake                            6
+#define RailChannel_ClientNotifyEvent                          7
+#define RailChannel_ClientWindowMove                           8
+#define RailChannel_ServerLocalMoveSize                                9
+#define RailChannel_ServerMinMaxInfo                           10
+#define RailChannel_ClientInformation                          11
+#define RailChannel_ClientSystemMenu                           12
+#define RailChannel_ClientLanguageBarInfo                      13
+#define RailChannel_ServerLanguageBarInfo                      14
+#define RailChannel_ServerExecuteResult                                15
+#define RailChannel_ClientGetAppIdRequest                      16
+#define RailChannel_ServerGetAppIdResponse                     17
+
+#define FREERDP_RAIL_CHANNEL_CLIENT_EXECUTE                    MakeMessageId(RailChannel, ClientExecute)
+#define FREERDP_RAIL_CHANNEL_CLIENT_ACTIVATE                   MakeMessageId(RailChannel, ClientActivate)
+#define FREERDP_RAIL_CHANNEL_CLIENT_SYSTEM_PARAMETERS          MakeMessageId(RailChannel, ClientSystemParameters)
+#define FREERDP_RAIL_CHANNEL_CLIENT_SYSTEM_COMMAND             MakeMessageId(RailChannel, ClientSystemCommand)
+#define FREERDP_RAIL_CHANNEL_CLIENT_HANDSHAKE                  MakeMessageId(RailChannel, ClientHandshake)
+#define FREERDP_RAIL_CHANNEL_SERVER_HANDSHAKE                  MakeMessageId(RailChannel, ServerHandshake)
+#define FREERDP_RAIL_CHANNEL_CLIENT_NOTIFY_EVENT               MakeMessageId(RailChannel, ClientNotifyEvent)
+#define FREERDP_RAIL_CHANNEL_CLIENT_WINDOW_MOVE                        MakeMessageId(RailChannel, ClientWindowMove)
+#define FREERDP_RAIL_CHANNEL_SERVER_LOCAL_MOVE_SIZE            MakeMessageId(RailChannel, ServerLocalMoveSize)
+#define FREERDP_RAIL_CHANNEL_SERVER_MIN_MAX_INFO               MakeMessageId(RailChannel, ServerMinMaxInfo)
+#define FREERDP_RAIL_CHANNEL_CLIENT_INFORMATION                        MakeMessageId(RailChannel, ClientInformation)
+#define FREERDP_RAIL_CHANNEL_CLIENT_SYSTEM_MENU                        MakeMessageId(RailChannel, ClientSystemMenu)
+#define FREERDP_RAIL_CHANNEL_CLIENT_LANGUAGE_BAR_INFO          MakeMessageId(RailChannel, ClientLanguageBarInfo)
+#define FREERDP_RAIL_CHANNEL_SERVER_LANGUAGE_BAR_INFO          MakeMessageId(RailChannel, ServerLanguageBarInfo)
+#define FREERDP_RAIL_CHANNEL_SERVER_EXECUTE_RESULT             MakeMessageId(RailChannel, ServerExecuteResult)
+#define FREERDP_RAIL_CHANNEL_CLIENT_GET_APP_ID_REQUEST         MakeMessageId(RailChannel, ClientGetAppIdRequest)
+#define FREERDP_RAIL_CHANNEL_SERVER_GET_APP_ID_RESPONSE                MakeMessageId(RailChannel, ServerGetAppIdResponse)
+
 #endif /* FREERDP_CORE_MESSAGE_H */
 
index e36bea5..64557a2 100644 (file)
@@ -59,12 +59,17 @@ struct _RECTANGLE_16
 typedef struct _RECTANGLE_16 RECTANGLE_16;
 
 /* Plugin events */
+
+#include <freerdp/message.h>
+#include <winpr/collections.h>
+
 typedef struct _RDP_EVENT RDP_EVENT;
 
 typedef void (*RDP_EVENT_CALLBACK) (RDP_EVENT* event);
 
 struct _RDP_EVENT
 {
+       UINT32 id;
        UINT16 event_class;
        UINT16 event_type;
        RDP_EVENT_CALLBACK on_event_free_callback;
@@ -74,7 +79,6 @@ struct _RDP_EVENT
 enum RDP_EVENT_CLASS
 {
        RDP_EVENT_CLASS_DEBUG = 0,
-       RDP_EVENT_CLASS_CLIPRDR,
        RDP_EVENT_CLASS_TSMF,
        RDP_EVENT_CLASS_RAIL
 };
index 39e186e..763a95d 100644 (file)
@@ -27,6 +27,7 @@
 
 #include <winpr/crt.h>
 
+#include <freerdp/message.h>
 #include <freerdp/utils/event.h>
 #include <freerdp/client/cliprdr.h>
 #include <freerdp/client/tsmf.h>
@@ -38,24 +39,28 @@ static RDP_EVENT* freerdp_cliprdr_event_new(UINT16 event_type)
 
        switch (event_type)
        {
-               case RDP_EVENT_TYPE_CB_MONITOR_READY:
+               case CliprdrChannel_MonitorReady:
                        event = (RDP_EVENT*) malloc(sizeof(RDP_CB_MONITOR_READY_EVENT));
                        ZeroMemory(event, sizeof(RDP_CB_MONITOR_READY_EVENT));
+                       event->id = MakeMessageId(CliprdrChannel, MonitorReady);
                        break;
 
-               case RDP_EVENT_TYPE_CB_FORMAT_LIST:
+               case CliprdrChannel_FormatList:
                        event = (RDP_EVENT*) malloc(sizeof(RDP_CB_FORMAT_LIST_EVENT));
                        ZeroMemory(event, sizeof(RDP_CB_FORMAT_LIST_EVENT));
+                       event->id = MakeMessageId(CliprdrChannel, FormatList);
                        break;
 
-               case RDP_EVENT_TYPE_CB_DATA_REQUEST:
+               case CliprdrChannel_DataRequest:
                        event = (RDP_EVENT*) malloc(sizeof(RDP_CB_DATA_REQUEST_EVENT));
                        ZeroMemory(event, sizeof(RDP_CB_DATA_REQUEST_EVENT));
+                       event->id = MakeMessageId(CliprdrChannel, DataRequest);
                        break;
 
-               case RDP_EVENT_TYPE_CB_DATA_RESPONSE:
+               case CliprdrChannel_DataResponse:
                        event = (RDP_EVENT*) malloc(sizeof(RDP_CB_DATA_RESPONSE_EVENT));
                        ZeroMemory(event, sizeof(RDP_CB_DATA_RESPONSE_EVENT));
+                       event->id = MakeMessageId(CliprdrChannel, DataResponse);
                        break;
        }
 
@@ -104,7 +109,7 @@ RDP_EVENT* freerdp_event_new(UINT16 event_class, UINT16 event_type,
                        ZeroMemory(event, sizeof(RDP_EVENT));
                        break;
 
-               case RDP_EVENT_CLASS_CLIPRDR:
+               case CliprdrChannel_Class:
                        event = freerdp_cliprdr_event_new(event_type);
                        break;
 
@@ -123,6 +128,8 @@ RDP_EVENT* freerdp_event_new(UINT16 event_class, UINT16 event_type,
                event->event_type = event_type;
                event->on_event_free_callback = on_event_free_callback;
                event->user_data = user_data;
+
+               event->id = GetMessageId(event_class, event_type);
        }
 
        return event;
@@ -130,18 +137,19 @@ RDP_EVENT* freerdp_event_new(UINT16 event_class, UINT16 event_type,
 
 static void freerdp_cliprdr_event_free(RDP_EVENT* event)
 {
-       switch (event->event_type)
+       switch (GetMessageType(event->id))
        {
-               case RDP_EVENT_TYPE_CB_FORMAT_LIST:
+               case CliprdrChannel_FormatList:
                        {
-                               RDP_CB_FORMAT_LIST_EVENT* cb_event = (RDP_CB_FORMAT_LIST_EVENT*)event;
+                               RDP_CB_FORMAT_LIST_EVENT* cb_event = (RDP_CB_FORMAT_LIST_EVENT*) event;
                                free(cb_event->formats);
                                free(cb_event->raw_format_data);
                        }
                        break;
-               case RDP_EVENT_TYPE_CB_DATA_RESPONSE:
+
+               case CliprdrChannel_DataResponse:
                        {
-                               RDP_CB_DATA_RESPONSE_EVENT* cb_event = (RDP_CB_DATA_RESPONSE_EVENT*)event;
+                               RDP_CB_DATA_RESPONSE_EVENT* cb_event = (RDP_CB_DATA_RESPONSE_EVENT*) event;
                                free(cb_event->data);
                        }
                        break;
@@ -164,6 +172,7 @@ static void freerdp_tsmf_event_free(RDP_EVENT* event)
 
 static void freerdp_rail_event_free(RDP_EVENT* event)
 {
+
 }
 
 void freerdp_event_free(RDP_EVENT* event)
@@ -173,14 +182,16 @@ void freerdp_event_free(RDP_EVENT* event)
                if (event->on_event_free_callback)
                        event->on_event_free_callback(event);
 
-               switch (event->event_class)
+               switch (GetMessageClass(event->id))
                {
-                       case RDP_EVENT_CLASS_CLIPRDR:
+                       case CliprdrChannel_Class:
                                freerdp_cliprdr_event_free(event);
                                break;
+
                        case RDP_EVENT_CLASS_TSMF:
                                freerdp_tsmf_event_free(event);
                                break;
+
                        case RDP_EVENT_CLASS_RAIL:
                                freerdp_rail_event_free(event);
                                break;