channel/rail: simplify data and event sending interface.

This commit is contained in:
roman-b
2011-08-19 15:42:14 +03:00
parent 3fa7d4a3d4
commit ab0e95a2ad
3 changed files with 7 additions and 31 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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)