Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
static void rail_process_receive(rdpSvcPlugin* plugin, STREAM* s)
{
	railPlugin* rail = (railPlugin*) plugin;
	rail_order_recv(rail->rail_order, s);
	stream_free(s);
}
Esempio n. 5
0
static void rail_process_receive(rdpSvcPlugin* plugin, wStream* s)
{
	railPlugin* rail = (railPlugin*) plugin;
	rail_order_recv(rail->rail_order, s);
	Stream_Free(s, TRUE);
}