mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-14 08:24:16 +09:00
channel/rail: simplify data and event sending interface.
This commit is contained in:
@@ -31,7 +31,7 @@
|
||||
#include "rail_orders.h"
|
||||
#include "rail_main.h"
|
||||
|
||||
static void rail_send_channel_data(void* rail_object, void* data, size_t length)
|
||||
void rail_send_channel_data(void* rail_object, void* data, size_t length)
|
||||
{
|
||||
STREAM* s = NULL;
|
||||
railPlugin* plugin = (railPlugin*) rail_object;
|
||||
@@ -59,16 +59,9 @@ static void rail_process_connect(rdpSvcPlugin* plugin)
|
||||
{
|
||||
railPlugin* rail = (railPlugin*) plugin;
|
||||
|
||||
rail->rail_event_sender.event_sender_object = rail;
|
||||
rail->rail_event_sender.send_rail_channel_event = rail_send_channel_event;
|
||||
|
||||
rail->rail_data_sender.data_sender_object = rail;
|
||||
rail->rail_data_sender.send_rail_channel_data = rail_send_channel_data;
|
||||
|
||||
rail->rail_order = rail_order_new();
|
||||
rail->rail_order->plugin_data = (RDP_PLUGIN_DATA*)plugin->channel_entry_points.pExtendedData;
|
||||
rail->rail_order->data_sender = &(rail->rail_data_sender);
|
||||
rail->rail_order->event_sender = &(rail->rail_event_sender);
|
||||
rail->rail_order->plugin = rail;
|
||||
}
|
||||
|
||||
static void rail_process_terminate(rdpSvcPlugin* plugin)
|
||||
|
||||
@@ -26,25 +26,11 @@
|
||||
#include <freerdp/utils/stream.h>
|
||||
#include <freerdp/utils/svc_plugin.h>
|
||||
|
||||
typedef struct _RAIL_CHANNEL_DATA_SENDER RAIL_CHANNEL_DATA_SENDER;
|
||||
typedef struct _RAIL_CHANNEL_EVENT_SENDER RAIL_CHANNEL_EVENT_SENDER;
|
||||
|
||||
struct _RAIL_CHANNEL_DATA_SENDER
|
||||
{
|
||||
void* data_sender_object;
|
||||
void (*send_rail_channel_data)(void* sender_object, void* data, size_t length);
|
||||
};
|
||||
|
||||
struct _RAIL_CHANNEL_EVENT_SENDER
|
||||
{
|
||||
void * event_sender_object;
|
||||
void (*send_rail_channel_event)(void* ui_event_sender_object, uint16 event_type, void* param);
|
||||
};
|
||||
|
||||
struct rdp_rail_order
|
||||
{
|
||||
UNICONV* uniconv;
|
||||
RDP_PLUGIN_DATA* plugin_data;
|
||||
void* plugin;
|
||||
RAIL_HANDSHAKE_ORDER handshake;
|
||||
RAIL_CLIENT_STATUS_ORDER client_status;
|
||||
RAIL_EXEC_ORDER exec;
|
||||
@@ -60,21 +46,18 @@ struct rdp_rail_order
|
||||
RAIL_LANGBAR_INFO_ORDER langbar_info;
|
||||
RAIL_GET_APPID_REQ_ORDER get_appid_req;
|
||||
RAIL_GET_APPID_RESP_ORDER get_appid_resp;
|
||||
RAIL_CHANNEL_DATA_SENDER* data_sender;
|
||||
RAIL_CHANNEL_EVENT_SENDER* event_sender;
|
||||
};
|
||||
typedef struct rdp_rail_order rdpRailOrder;
|
||||
|
||||
struct rail_plugin
|
||||
{
|
||||
rdpSvcPlugin plugin;
|
||||
RAIL_CHANNEL_DATA_SENDER rail_data_sender;
|
||||
RAIL_CHANNEL_EVENT_SENDER rail_event_sender;
|
||||
rdpRailOrder* rail_order;
|
||||
};
|
||||
typedef struct rail_plugin railPlugin;
|
||||
|
||||
void rail_send_channel_event(void* rail_object, uint16 event_type, void* param);
|
||||
void rail_send_channel_data(void* rail_object, void* data, size_t length);
|
||||
|
||||
#define WITH_DEBUG_RAIL 1
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ void rail_send_pdu(rdpRailOrder* rail_order, STREAM* s, uint16 orderType)
|
||||
printf("Sending %s PDU, length:%d\n",
|
||||
RAIL_ORDER_TYPE_STRINGS[((orderType & 0xF0) >> 3) + (orderType & 0x0F)], orderLength);
|
||||
|
||||
rail_order->data_sender->send_rail_channel_data(rail_order->data_sender->data_sender_object, s->data, orderLength);
|
||||
rail_send_channel_data(rail_order->plugin, s->data, orderLength);
|
||||
}
|
||||
|
||||
void rail_write_high_contrast(STREAM* s, HIGH_CONTRAST* high_contrast)
|
||||
@@ -357,8 +357,8 @@ void rail_recv_handshake_order(rdpRailOrder* rail_order, STREAM* s)
|
||||
rail_order->sysparam.workArea.right = 1024;
|
||||
rail_order->sysparam.workArea.bottom = 768;
|
||||
|
||||
rail_send_channel_event(rail_order->event_sender->event_sender_object,
|
||||
RDP_EVENT_TYPE_RAIL_CHANNEL_GET_SYSPARAMS, (void*) &rail_order->sysparam);
|
||||
rail_send_channel_event(rail_order->plugin,
|
||||
RDP_EVENT_TYPE_RAIL_CHANNEL_GET_SYSPARAMS, (void*) &rail_order->sysparam);
|
||||
}
|
||||
|
||||
void rail_order_recv(rdpRailOrder* rail_order, STREAM* s)
|
||||
|
||||
Reference in New Issue
Block a user