13#ifndef _NETSIM_LTENR_BUFFER_H_
14#define _NETSIM_LTENR_BUFFER_H_
21 typedef void* ptrLTENR_BUFFERITERATOR;
22#define INFINITE_BUFFER 0xFFFFFFFFFFFFFFFF
25#pragma region LTENR_BufferPacket
28 NetSim_PACKET* packet;
35 }LTENR_BUFFEREDPACKET, *ptrLTENR_BUFFEREDPACKET;
38#pragma region LTENR_BUFFER_AND_MACROS
43 ptrLTENR_BUFFEREDPACKET headPacket;
44 ptrLTENR_BUFFEREDPACKET tailPacket;
47 }LTENR_BUFFER, *ptrLTENR_BUFFER;
49#define LTENR_BUFFER_ISEMPTY(buffer) (buffer != NULL && buffer->headPacket == NULL)
50#define LTENR_BUFFER_HASPACKET(buffer) (buffer != NULL && buffer->headPacket != NULL)
55 ptrLTENR_BUFFER LTENR_BUFFER_INIT(UINT64 maxSize);
56 void LTENR_BUFFER_DELETE(ptrLTENR_BUFFER buffer);
58 bool LTENR_BUFFER_ADDPACKET(ptrLTENR_BUFFER buffer,
59 NetSim_PACKET* packet,
63 bool LTENR_BUFFER_ADDPACKET_SORTED(ptrLTENR_BUFFER buffer,
64 NetSim_PACKET* packet,
68 bool(*fnSort)(ptrLTENR_BUFFEREDPACKET currBuffered,
69 ptrLTENR_BUFFEREDPACKET newBuffered));
70 NetSim_PACKET* LTENR_BUFFER_GETPACKET(ptrLTENR_BUFFER buffer,
74 NetSim_PACKET* LTENR_BUFFER_HEADPACKET(ptrLTENR_BUFFER buffer,
80 ptrLTENR_BUFFERITERATOR _LTENR_BUFFER_NEWITERATOR_(ptrLTENR_BUFFER buffer,
int line,
char* file);
81#define LTENR_BUFFER_NEWITERATOR(buffer) (_LTENR_BUFFER_NEWITERATOR_((buffer),__LINE__,__FILE__))
83 void LTENR_BUFFER_DELETEITERATOR(ptrLTENR_BUFFERITERATOR* it);
84 NetSim_PACKET* LTENR_BUFFER_ITERATOR_NEXT(ptrLTENR_BUFFERITERATOR it);
85 void LTENR_BUFFER_ITERATOR_REMOVE(ptrLTENR_BUFFERITERATOR it);
86 NetSim_PACKET* LTENR_BUFFER_ITERATOR_CURRENT(ptrLTENR_BUFFERITERATOR it);