Loading src/lib/kinetic_allocator.c +3 −3 Original line number Diff line number Diff line Loading @@ -176,10 +176,9 @@ void KineticAllocator_FreeList(KineticList* const list) } KineticPDU* KineticAllocator_NewPDU(KineticList* const list) KineticPDU* KineticAllocator_NewPDU(KineticList* const list, KineticConnection* connection) { assert(connection != NULL); KineticPDU* newPDU = (KineticPDU*)KineticAllocator_NewItem( list, sizeof(KineticPDU)); if (newPDU == NULL) { Loading @@ -187,6 +186,7 @@ KineticPDU* KineticAllocator_NewPDU(KineticList* const list) return NULL; } assert(newPDU->proto == NULL); KINETIC_PDU_INIT(newPDU, connection); // LOGF("Allocated new PDU @ 0x%0llX", (long long)newPDU); return newPDU; } Loading src/lib/kinetic_allocator.h +1 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ #include "kinetic_types_internal.h" KineticPDU* KineticAllocator_NewPDU(KineticList* const list); KineticPDU* KineticAllocator_NewPDU(KineticList* const list, KineticConnection* connection); void KineticAllocator_FreePDU(KineticList* const list, KineticPDU* pdu); void KineticAllocator_FreeAllPDUs(KineticList* const list); bool KineticAllocator_ValidateAllMemoryFreed(KineticList* const list); Loading src/lib/kinetic_client.c +4 −11 Original line number Diff line number Diff line Loading @@ -111,18 +111,19 @@ KineticStatus KineticClient_Connect(const KineticSession* config, return KINETIC_STATUS_HMAC_EMPTY; } // Obtain a new connection/handle *handle = KineticConnection_NewConnection(config); if (handle == KINETIC_HANDLE_INVALID) { LOG("Failed connecting to device!"); return KINETIC_STATUS_SESSION_INVALID; } KineticConnection* connection = KineticConnection_FromHandle(*handle); if (connection == NULL) { LOG("Failed getting valid connection from handle!"); return KINETIC_STATUS_CONNECTION_ERROR; } // Create the connection KineticStatus status = KineticConnection_Connect(connection); if (status != KINETIC_STATUS_SUCCESS) { LOGF("Failed creating connection to %s:%d", config->host, config->port); Loading @@ -131,16 +132,8 @@ KineticStatus KineticClient_Connect(const KineticSession* config, return status; } // Retrieve initial connection status message KineticPDU* statusPDU = KineticAllocator_NewPDU(&connection->pdus); if (statusPDU == NULL) { LOG("Failed allocating connection status PDU after establishing a session!"); KineticClient_Disconnect(handle); return KINETIC_STATUS_MEMORY_ERROR; } KINETIC_PDU_INIT(statusPDU, connection); status = KineticPDU_Receive(statusPDU); KineticAllocator_FreePDU(&connection->pdus, statusPDU); // Retrieve initial connection status info status = KineticConnection_ReceiveDeviceStatusMessage(connection); return status; } Loading src/lib/kinetic_connection.c +24 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ #include "kinetic_connection.h" #include "kinetic_types_internal.h" #include "kinetic_socket.h" #include "kinetic_pdu.h" #include "kinetic_allocator.h" #include "kinetic_logger.h" #include <string.h> #include <stdlib.h> Loading Loading @@ -100,6 +102,28 @@ KineticStatus KineticConnection_Disconnect(KineticConnection* const connection) return KINETIC_STATUS_SUCCESS; } KineticStatus KineticConnection_ReceiveDeviceStatusMessage( KineticConnection* const connection) { if (connection == NULL || connection->socket < 0) { return KINETIC_STATUS_SESSION_INVALID; } KineticPDU* statusPDU = KineticAllocator_NewPDU(&connection->pdus, connection); if (statusPDU == NULL) { LOG("Failed allocating connection status PDU to receive session info!"); return KINETIC_STATUS_MEMORY_ERROR; } KineticStatus status = KineticPDU_Receive(statusPDU); if (status == KINETIC_STATUS_SUCCESS) { if (statusPDU->command != NULL && statusPDU->command->header != NULL) { connection->connectionID = statusPDU->command->header->connectionID; } } KineticAllocator_FreePDU(&connection->pdus, statusPDU); return status; } void KineticConnection_IncrementSequence(KineticConnection* const connection) { assert(connection != NULL); Loading src/lib/kinetic_connection.h +1 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ void KineticConnection_FreeConnection(KineticSessionHandle* const handle); KineticConnection* KineticConnection_FromHandle(KineticSessionHandle handle); KineticStatus KineticConnection_Connect(KineticConnection* const connection); KineticStatus KineticConnection_Disconnect(KineticConnection* const connection); KineticStatus KineticConnection_ReceiveDeviceStatusMessage(KineticConnection* const connection); void KineticConnection_IncrementSequence(KineticConnection* const connection); #endif // _KINETIC_CONNECTION_H Loading
src/lib/kinetic_allocator.c +3 −3 Original line number Diff line number Diff line Loading @@ -176,10 +176,9 @@ void KineticAllocator_FreeList(KineticList* const list) } KineticPDU* KineticAllocator_NewPDU(KineticList* const list) KineticPDU* KineticAllocator_NewPDU(KineticList* const list, KineticConnection* connection) { assert(connection != NULL); KineticPDU* newPDU = (KineticPDU*)KineticAllocator_NewItem( list, sizeof(KineticPDU)); if (newPDU == NULL) { Loading @@ -187,6 +186,7 @@ KineticPDU* KineticAllocator_NewPDU(KineticList* const list) return NULL; } assert(newPDU->proto == NULL); KINETIC_PDU_INIT(newPDU, connection); // LOGF("Allocated new PDU @ 0x%0llX", (long long)newPDU); return newPDU; } Loading
src/lib/kinetic_allocator.h +1 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ #include "kinetic_types_internal.h" KineticPDU* KineticAllocator_NewPDU(KineticList* const list); KineticPDU* KineticAllocator_NewPDU(KineticList* const list, KineticConnection* connection); void KineticAllocator_FreePDU(KineticList* const list, KineticPDU* pdu); void KineticAllocator_FreeAllPDUs(KineticList* const list); bool KineticAllocator_ValidateAllMemoryFreed(KineticList* const list); Loading
src/lib/kinetic_client.c +4 −11 Original line number Diff line number Diff line Loading @@ -111,18 +111,19 @@ KineticStatus KineticClient_Connect(const KineticSession* config, return KINETIC_STATUS_HMAC_EMPTY; } // Obtain a new connection/handle *handle = KineticConnection_NewConnection(config); if (handle == KINETIC_HANDLE_INVALID) { LOG("Failed connecting to device!"); return KINETIC_STATUS_SESSION_INVALID; } KineticConnection* connection = KineticConnection_FromHandle(*handle); if (connection == NULL) { LOG("Failed getting valid connection from handle!"); return KINETIC_STATUS_CONNECTION_ERROR; } // Create the connection KineticStatus status = KineticConnection_Connect(connection); if (status != KINETIC_STATUS_SUCCESS) { LOGF("Failed creating connection to %s:%d", config->host, config->port); Loading @@ -131,16 +132,8 @@ KineticStatus KineticClient_Connect(const KineticSession* config, return status; } // Retrieve initial connection status message KineticPDU* statusPDU = KineticAllocator_NewPDU(&connection->pdus); if (statusPDU == NULL) { LOG("Failed allocating connection status PDU after establishing a session!"); KineticClient_Disconnect(handle); return KINETIC_STATUS_MEMORY_ERROR; } KINETIC_PDU_INIT(statusPDU, connection); status = KineticPDU_Receive(statusPDU); KineticAllocator_FreePDU(&connection->pdus, statusPDU); // Retrieve initial connection status info status = KineticConnection_ReceiveDeviceStatusMessage(connection); return status; } Loading
src/lib/kinetic_connection.c +24 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ #include "kinetic_connection.h" #include "kinetic_types_internal.h" #include "kinetic_socket.h" #include "kinetic_pdu.h" #include "kinetic_allocator.h" #include "kinetic_logger.h" #include <string.h> #include <stdlib.h> Loading Loading @@ -100,6 +102,28 @@ KineticStatus KineticConnection_Disconnect(KineticConnection* const connection) return KINETIC_STATUS_SUCCESS; } KineticStatus KineticConnection_ReceiveDeviceStatusMessage( KineticConnection* const connection) { if (connection == NULL || connection->socket < 0) { return KINETIC_STATUS_SESSION_INVALID; } KineticPDU* statusPDU = KineticAllocator_NewPDU(&connection->pdus, connection); if (statusPDU == NULL) { LOG("Failed allocating connection status PDU to receive session info!"); return KINETIC_STATUS_MEMORY_ERROR; } KineticStatus status = KineticPDU_Receive(statusPDU); if (status == KINETIC_STATUS_SUCCESS) { if (statusPDU->command != NULL && statusPDU->command->header != NULL) { connection->connectionID = statusPDU->command->header->connectionID; } } KineticAllocator_FreePDU(&connection->pdus, statusPDU); return status; } void KineticConnection_IncrementSequence(KineticConnection* const connection) { assert(connection != NULL); Loading
src/lib/kinetic_connection.h +1 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ void KineticConnection_FreeConnection(KineticSessionHandle* const handle); KineticConnection* KineticConnection_FromHandle(KineticSessionHandle handle); KineticStatus KineticConnection_Connect(KineticConnection* const connection); KineticStatus KineticConnection_Disconnect(KineticConnection* const connection); KineticStatus KineticConnection_ReceiveDeviceStatusMessage(KineticConnection* const connection); void KineticConnection_IncrementSequence(KineticConnection* const connection); #endif // _KINETIC_CONNECTION_H