SccQueuePrimatives.h [plain text]
#ifndef scc_queue_primatives_h
#define scc_queue_primatives_h
#include "sys/types.h"
extern "C"
{
#include <kern/lock.h>
}
typedef struct CirQueue {
u_char *Start;
u_char *End;
u_char *NextChar;
u_char *LastChar;
size_t Size;
size_t InQueue;
IOLock *InUse;
} CirQueue;
typedef enum QueueStatus {
queueNoError = 0,
queueFull,
queueEmpty,
queueMaxStatus
} QueueStatus;
QueueStatus InitQueue(CirQueue *Queue, u_char *Buffer, size_t Size);
QueueStatus CloseQueue(CirQueue *Queue);
size_t AddtoQueue(CirQueue *Queue, u_char *Buffer, size_t Size);
size_t RemovefromQueue(CirQueue *Queue, u_char *Buffer, size_t MaxSize);
size_t FreeSpaceinQueue(CirQueue *Queue);
size_t UsedSpaceinQueue(CirQueue *Queue);
size_t GetQueueSize( CirQueue *Queue);
QueueStatus AddBytetoQueue(CirQueue *Queue, char Value);
QueueStatus GetBytetoQueue(CirQueue *Queue, u_char *Value);
QueueStatus GetQueueStatus(CirQueue *Queue);
u_char* BeginDirectReadFromQueue(CirQueue *Queue, size_t* size, Boolean* queueWrapped);
void EndDirectReadFromQueue(CirQueue *Queue, size_t size);
#endif