static void* rail_virtual_channel_client_thread(void* arg) { wStream* data; wMessage message; railPlugin* rail = (railPlugin*) arg; while (1) { if (!MessageQueue_Wait(rail->queue)) break; if (MessageQueue_Peek(rail->queue, &message, TRUE)) { if (message.id == WMQ_QUIT) break; if (message.id == 0) { data = (wStream*) message.wParam; if (!rail_order_recv(rail, data)) { WLog_ERR(TAG, "%s: invalid message, exiting", __FUNCTION__); break; } } } } ExitThread(0); return NULL; }
static void* rail_virtual_channel_client_thread(void* arg) { wStream* data; wMessage message; railPlugin* rail = (railPlugin*) arg; while (1) { if (!MessageQueue_Wait(rail->queue)) break; if (MessageQueue_Peek(rail->queue, &message, TRUE)) { if (message.id == WMQ_QUIT) break; if (message.id == 0) { data = (wStream*) message.wParam; rail_order_recv(rail, data); } } } ExitThread(0); return NULL; }
static void* rail_virtual_channel_client_thread(void* arg) { wStream* data; wMessage message; railPlugin* rail = (railPlugin*) arg; UINT error = CHANNEL_RC_OK; while (1) { if (!MessageQueue_Wait(rail->queue)) { WLog_ERR(TAG, "MessageQueue_Wait failed!"); error = ERROR_INTERNAL_ERROR; break; } if (!MessageQueue_Peek(rail->queue, &message, TRUE)) { WLog_ERR(TAG, "MessageQueue_Peek failed!"); error = ERROR_INTERNAL_ERROR; break; } if (message.id == WMQ_QUIT) break; if (message.id == 0) { data = (wStream*) message.wParam; if ((error = rail_order_recv(rail, data))) { WLog_ERR(TAG, "rail_order_recv failed with error %"PRIu32"!", error); break; } } } if (error && rail->rdpcontext) setChannelError(rail->rdpcontext, error, "rail_virtual_channel_client_thread reported an error"); ExitThread((DWORD)error); return NULL; }
static void rail_process_receive(rdpSvcPlugin* plugin, STREAM* s) { railPlugin* rail = (railPlugin*) plugin; rail_order_recv(rail->rail_order, s); stream_free(s); }
static void rail_process_receive(rdpSvcPlugin* plugin, wStream* s) { railPlugin* rail = (railPlugin*) plugin; rail_order_recv(rail->rail_order, s); Stream_Free(s, TRUE); }