queue.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #ifndef _QUEUE_H_
  2. #define _QUEUE_H_
  3. #include "main.h"
  4. #include "utilits.h"
  5. #include "utils.h"
  6. #include <stddef.h> // size_t
  7. #include <stdint.h> // uint16_t
  8. typedef struct _QUEUE_ENTRY_
  9. {
  10. uint16_t cbytes; // êîëè÷åñòâî áàéò â ýëåìåíòå î÷åðåäè
  11. }
  12. QUEUE_ENTRY;
  13. typedef struct _QUEUE_
  14. {
  15. char * pString;
  16. size_t nStringLen;
  17. //-----------------------
  18. size_t count; // count of elements in the queue
  19. size_t bytes_available; // free bytes in the buffer
  20. size_t size; // the size of buffer of the queue
  21. QUEUE_ENTRY * LastWrite; // The previous write pointer
  22. QUEUE_ENTRY * pQueueHead; // The pointer to the start of the buffer
  23. QUEUE_ENTRY * pWritePointer; // write-pointer (head of the queue)
  24. QUEUE_ENTRY * pReadPointer; // read-pointer (tail of the queue)
  25. } QUEUE;
  26. #define MAX_QUEUE_SIZE 4096
  27. BOOL queue_create( BYTE * memoryblock, size_t size, QUEUE * pQueue );
  28. BOOL queue_clear( QUEUE * pQueue );
  29. BOOL queue_getcount( QUEUE * pQueue, size_t * pSize );
  30. BOOL queue_cat( QUEUE * pQueue, const BYTE * pData, size_t bytes);
  31. BOOL queue_add( QUEUE * pQueue, const BYTE * pData, size_t bytes);
  32. BOOL queue_get( QUEUE * pQueue, BYTE * pReturnData, size_t cbMaxSize, size_t * pLength );
  33. BOOL queue_get_topitemsize( QUEUE * pQueue, size_t * pSize );
  34. // unused:
  35. //BOOL queue_getsize( QUEUE * pQueue, unsigned int * pCount ); // alternate "__queue_size(pQueue)" macros
  36. //BOOL queue_bytes_available( QUEUE * pQueue, size_t * pBytes ); // alternate "__queue_bytesavailable(pQueue)" macros
  37. //BOOL queue_peeklastbyte( QUEUE * pQueue, BYTE * pReturnByte );
  38. //BOOL queue_peekbyte( QUEUE * pQueue, BYTE * pReturnByte, int Number );
  39. #endif