Blame channels/urbdrc/client/isoch_queue.h

Packit 1fb8d4
/**
Packit 1fb8d4
 * FreeRDP: A Remote Desktop Protocol Implementation
Packit 1fb8d4
 * RemoteFX USB Redirection
Packit 1fb8d4
 *
Packit 1fb8d4
 * Copyright 2012 Atrust corp.
Packit 1fb8d4
 * Copyright 2012 Alfred Liu <alfred.liu@atruscorp.com>
Packit 1fb8d4
 *
Packit 1fb8d4
 * Licensed under the Apache License, Version 2.0 (the "License");
Packit 1fb8d4
 * you may not use this file except in compliance with the License.
Packit 1fb8d4
 * You may obtain a copy of the License at
Packit 1fb8d4
 *
Packit 1fb8d4
 *	 http://www.apache.org/licenses/LICENSE-2.0
Packit 1fb8d4
 *
Packit 1fb8d4
 * Unless required by applicable law or agreed to in writing, software
Packit 1fb8d4
 * distributed under the License is distributed on an "AS IS" BASIS,
Packit 1fb8d4
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit 1fb8d4
 * See the License for the specific language governing permissions and
Packit 1fb8d4
 * limitations under the License.
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
#ifndef FREERDP_CHANNEL_URBDRC_CLIENT_ISOCH_QUEUE_H
Packit 1fb8d4
#define FREERDP_CHANNEL_URBDRC_CLIENT_ISOCH_QUEUE_H
Packit 1fb8d4
Packit 1fb8d4
#include "urbdrc_types.h"
Packit 1fb8d4
Packit 1fb8d4
Packit 1fb8d4
typedef struct _ISOCH_CALLBACK_DATA ISOCH_CALLBACK_DATA;
Packit 1fb8d4
typedef struct _ISOCH_CALLBACK_QUEUE ISOCH_CALLBACK_QUEUE;
Packit 1fb8d4
Packit 1fb8d4
Packit 1fb8d4
struct _ISOCH_CALLBACK_DATA
Packit 1fb8d4
{
Packit 1fb8d4
	void * inode;
Packit 1fb8d4
	void * prev;
Packit 1fb8d4
	void * next;
Packit 1fb8d4
	void * device;
Packit 1fb8d4
	BYTE * out_data;
Packit 1fb8d4
	UINT32 out_size;
Packit 1fb8d4
	void * callback;
Packit 1fb8d4
};
Packit 1fb8d4
Packit 1fb8d4
Packit 1fb8d4
Packit 1fb8d4
struct _ISOCH_CALLBACK_QUEUE
Packit 1fb8d4
{
Packit 1fb8d4
	int isoch_num;
Packit 1fb8d4
	ISOCH_CALLBACK_DATA* curr; /* current point */
Packit 1fb8d4
	ISOCH_CALLBACK_DATA* head; /* head point in linked list */
Packit 1fb8d4
	ISOCH_CALLBACK_DATA* tail; /* tail point in linked list */
Packit 1fb8d4
	
Packit 1fb8d4
	pthread_mutex_t isoch_loading;
Packit 1fb8d4
	
Packit 1fb8d4
	/* Isochronous queue service */
Packit 1fb8d4
	void (*rewind) (ISOCH_CALLBACK_QUEUE * queue);
Packit 1fb8d4
	BOOL (*has_next) (ISOCH_CALLBACK_QUEUE * queue);
Packit 1fb8d4
	int (*unregister_data) (ISOCH_CALLBACK_QUEUE* queue, ISOCH_CALLBACK_DATA* isoch);
Packit 1fb8d4
	ISOCH_CALLBACK_DATA *(*get_next) (ISOCH_CALLBACK_QUEUE * queue);
Packit 1fb8d4
	ISOCH_CALLBACK_DATA *(*register_data) (ISOCH_CALLBACK_QUEUE* queue, 
Packit 1fb8d4
		void * callback, void * dev);
Packit 1fb8d4
	void (*free) (ISOCH_CALLBACK_QUEUE * queue);
Packit 1fb8d4
	
Packit 1fb8d4
};
Packit 1fb8d4
Packit 1fb8d4
Packit 1fb8d4
ISOCH_CALLBACK_QUEUE* isoch_queue_new(void);
Packit 1fb8d4
Packit 1fb8d4
	
Packit 1fb8d4
Packit 1fb8d4
#endif /* FREERDP_CHANNEL_URBDRC_CLIENT_ISOCH_QUEUE_H */