Commit 15f25101 authored by Greg Williams's avatar Greg Williams
Browse files

Added support for iterating through PDUs in preparation for sequence count...

Added support for iterating through PDUs in preparation for sequence count correlation of response PDUs to requests
parent 9c90d4ad
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ typedef struct _ByteArray {
#define BYTE_ARRAY_NONE (ByteArray){.len = 0, .data = NULL}

ByteArray ByteArray_Create(void* data, size_t len);
ByteArray ByteArray_CreateWithCString(char* str);
ByteArray ByteArray_CreateWithCString(const char* str);
ByteArray ByteArray_GetSlice(const ByteArray array, size_t start, size_t len);
void ByteArray_FillWithDummyData(const ByteArray array);

+1 −1
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ ByteArray ByteArray_Create(void* data, size_t len)
    };
}

ByteArray ByteArray_CreateWithCString(char* str)
ByteArray ByteArray_CreateWithCString(const char* str)
{
    return (ByteArray) {
        .data = (uint8_t*)str, .len = strlen(str)
+31 −0
Original line number Diff line number Diff line
@@ -234,6 +234,37 @@ void KineticAllocator_FreePDU(KineticList* const list, KineticPDU* pdu)
    KineticAllocator_FreeItem(list, (void*)pdu);
}

KineticPDU* KineticAllocator_GetFirstPDU(KineticList* const list)
{
    assert(list != NULL);
    if (list->start == NULL) {
        return NULL;
    }
    return (KineticPDU*)list->start->data;
}

KineticPDU* KineticAllocator_GetNextPDU(KineticList* const list, KineticPDU* pdu)
{
    assert(list != NULL);
    KineticPDU* next = NULL;

    KineticAllocator_LockList(list);
    KineticListItem* current = list->start;
    while (current != NULL) {
        KineticPDU* currPDU = (KineticPDU*)current->data;
        if (currPDU == pdu) {
            if (current->next != NULL) {
                next = (KineticPDU*)current->next->data;
            }
            break;
        }
        current = current->next;
    }
    KineticAllocator_UnlockList(list);
    
    return next;
}

void KineticAllocator_FreeAllPDUs(KineticList* const list)
{
    if (list->start != NULL) {
+2 −0
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@
void KineticAllocator_InitList(KineticList* const list);
KineticPDU* KineticAllocator_NewPDU(KineticList* const list, KineticConnection* connection);
void KineticAllocator_FreePDU(KineticList* const list, KineticPDU* pdu);
KineticPDU* KineticAllocator_GetFirstPDU(KineticList* const list);
KineticPDU* KineticAllocator_GetNextPDU(KineticList* const list, KineticPDU* pdu);
void KineticAllocator_FreeAllPDUs(KineticList* const list);
bool KineticAllocator_ValidateAllMemoryFreed(KineticList* const list);

+127 −224

File changed.

Preview size limit exceeded, changes collapsed.

Loading