From 288c73104c72528f2a390c1958db7f1cf955ec06 Mon Sep 17 00:00:00 2001 From: timerix Date: Fri, 25 Nov 2022 10:36:38 +0600 Subject: [PATCH] fixed errors --- .vscode/launch.json | 14 +-------- src/Network/knAddress.c | 7 +++-- src/Network/knAddress.h | 4 +-- src/Network/knSocket.c | 4 +-- src/Network/knSocket.h | 6 ++-- src/Network/knSocketChanneled.c | 18 +++++------ src/Network/knSocketChanneled.h | 41 ++++++++++++------------- src/Network/network.h | 2 +- src/base/type_system/{ktId.h => ktid.h} | 0 tests/test_network.c | 3 +- 10 files changed, 42 insertions(+), 57 deletions(-) rename src/base/type_system/{ktId.h => ktid.h} (100%) diff --git a/.vscode/launch.json b/.vscode/launch.json index df30fe5..87f37ed 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -11,19 +11,7 @@ "cwd": "${fileDirname}", "externalConsole": false, "MIMode": "gdb", - "miDebuggerPath": "gdb", - "setupCommands": [ - { - "description": "Enable pretty-printing for gdb", - "text": "-enable-pretty-printing", - "ignoreFailures": true - }, - { - "description": "Set Disassembly Flavor to Intel", - "text": "-gdb-set disassembly-flavor intel", - "ignoreFailures": true - } - ] + "miDebuggerPath": "gdb" }, { "name": "(gdb-pipe) Debug", diff --git a/src/Network/knAddress.c b/src/Network/knAddress.c index 73b4bb6..a7f8e3a 100644 --- a/src/Network/knAddress.c +++ b/src/Network/knAddress.c @@ -1,7 +1,7 @@ #include "knAddress.h" -ktId_define(knIPV4Address); -ktId_define(knIPV4Endpoint); +ktid_define(knIPV4Address); +ktid_define(knIPV4Endpoint); Maybe knIPV4Address_fromStr(char* addrStr){ char* addrStr_src=addrStr; @@ -40,5 +40,6 @@ Maybe knIPV4Address_fromStr(char* addrStr){ break; } } - return SUCCESS(UniStack(knIPV4Address, addr)); + //TODO UniStack for generic structs + return SUCCESS(UniUInt64(addr.address)); } diff --git a/src/Network/knAddress.h b/src/Network/knAddress.h index 51090e7..ea867a1 100644 --- a/src/Network/knAddress.h +++ b/src/Network/knAddress.h @@ -13,7 +13,7 @@ typedef union knIPV4Address { uint32 address; char bytes[4]; } knIPV4Address; -ktId_declare(knIPV4Address); +ktid_declare(knIPV4Address); #define knIPV4Address_fromBytes(A, B, C, D) (knIPV4Address){.bytes={A,B,C,D}} @@ -24,7 +24,7 @@ typedef struct knIPV4Endpoint { knIPV4Address address; knPort port; } knIPV4Endpoint; -ktId_declare(knIPV4Endpoint); +ktid_declare(knIPV4Endpoint); #define knIPV4Endpoint_create(ADDR, PORT) (knIPV4Endpoint){ADDR, PORT} diff --git a/src/Network/knSocket.c b/src/Network/knSocket.c index ac16411..9c32aeb 100644 --- a/src/Network/knSocket.c +++ b/src/Network/knSocket.c @@ -1,5 +1,5 @@ #include "network.h" #include "stdSocketHeaders.h" -ktId_define(knSocketProtocol); -ktId_define(knSocket); +ktid_define(knSocketProtocol); +ktid_define(knSocket); diff --git a/src/Network/knSocket.h b/src/Network/knSocket.h index 66fd348..71d2f89 100644 --- a/src/Network/knSocket.h +++ b/src/Network/knSocket.h @@ -11,17 +11,15 @@ extern "C" { typedef enum __attribute__((__packed__)) knSocketProtocol { knSocketProtocol_TCP, knSocketProtocol_UDP, knSocket_Channeled } knSocketProtocol; -ktId_declare(knSocketProtocol); +ktid_declare(knSocketProtocol); typedef struct knSocket { knSocketProtocol type; int64 socketfd; knIPV4Endpoint localEndpoint; knIPV4Endpoint remoteEndpoint; - // uint16 channelsAmount; - // knChannel** channels; } knSocket; -ktId_declare(knSocket); +ktid_declare(knSocket); ///@return Maybe new socket Maybe knSocket_open(knSocketProtocol sockType); diff --git a/src/Network/knSocketChanneled.c b/src/Network/knSocketChanneled.c index ec53858..65bb240 100644 --- a/src/Network/knSocketChanneled.c +++ b/src/Network/knSocketChanneled.c @@ -1,11 +1,11 @@ #include "network.h" #include "stdSocketHeaders.h" -ktId_define(knPacVersion); -ktId_define(knPackage); -ktId_define(knPackageQueueElem); -ktId_define(knChannel); -ktId_define(knSocketChanneled); +ktid_define(knPacVersion); +ktid_define(knPackage); +ktid_define(knPackageQueueElem); +ktid_define(knChannel); +ktid_define(knSocketChanneled); Maybe knSocketChanneled_open(knSocketProtocol sockType){ knSocketChanneled* newSocket=malloc(sizeof(knSocketChanneled)); @@ -29,7 +29,7 @@ Maybe knSocketChanneled_open(knSocketProtocol sockType){ safethrow("can't create UDP socket", free(newSocket)); break; } - return SUCCESS(UniPtr(knSocketChanneledPtr, newSocket)); + return SUCCESS(UniHeapPtr(knSocketChanneled, newSocket)); } Maybe knSocketChanneled_close(knSocketChanneled* knsocket){ @@ -43,7 +43,7 @@ Maybe knSocketChanneled_close(knSocketChanneled* knsocket){ if(rezult==-1) { safethrow("can't close socket",;); } - else return SUCCESS(UniNull); + else return MaybeNull; } knChannel* __createChannel(){ @@ -72,7 +72,7 @@ Maybe knSocketChanneled_createChannel(knSocketChanneled* sock){ addr.sin_family= bind(sock->socketfd); sock->localEndpoint=localEndp; - return SUCCESS(UniNull); + return MaybeNull; } Maybe knSocketChanneled_connect(knSocketChanneled* sock, knIPV4Endpoint remoteEndp){ @@ -80,7 +80,7 @@ Maybe knSocketChanneled_connect(knSocketChanneled* sock, knIPV4Endpoint remoteEn safethrow("socket is connected already",;); sock->remoteEndpoint=remoteEndp; - return SUCCESS(UniNull); + return MaybeNull; } Maybe knSocketChanneled_accept(knSocketChanneled* sock){ diff --git a/src/Network/knSocketChanneled.h b/src/Network/knSocketChanneled.h index 0b3a934..dbf8d34 100644 --- a/src/Network/knSocketChanneled.h +++ b/src/Network/knSocketChanneled.h @@ -13,7 +13,7 @@ extern "C" { typedef enum __attribute__((__packed__)) knPacVersion { knPac_V1 } knPacVersion; -ktId_declare(knPacVersion); +ktid_declare(knPacVersion); static const char knPacHeader[5]={'k','n','p','a','c'}; @@ -26,63 +26,60 @@ typedef struct knPackage { uint64 data_hash; // hash64 of data uint8* data; // ptr to data } knPackage; -ktId_declare(knPackage); +ktid_declare(knPackage); typedef struct knPackageQueueElem knPackageQueueElem; struct knPackageQueueElem { - union { - knPackage; - knPackage package; - }; + knPackage package; knPackageQueueElem* previousElem; knPackageQueueElem* nextElem; }; -ktId_declare(knPackageQueueElem); +ktid_declare(knPackageQueueElem); typedef struct knChannel { knPackageQueueElem* queueStart; } knChannel; -ktId_declare(knChannel); +ktid_declare(knChannel); typedef struct knSocketChanneled{ - union { - knSocket; - knSocket base; - }; + knSocketProtocol type; + int64 socketfd; + knIPV4Endpoint localEndpoint; + knIPV4Endpoint remoteEndpoint; uint16 channelsAmount; knChannel** channels; } knSocketChanneled; -ktId_declare(knSocketChanneled); +ktid_declare(knSocketChanneled); -///@return Maybe new socket +///@return Maybe new socket Maybe knSocketChanneled_open(knSocketProtocol sockType); ///@return Maybe error or nothing -Maybe knSocketChanneled_close(knSocket* socket); +Maybe knSocketChanneled_close(knSocketChanneled* socket); ///@return Maybe channel index -Maybe knSocketChanneled_createChannel(knSocket* socket); +Maybe knSocketChanneled_createChannel(knSocketChanneled* socket); ///sets socket local endpoint ///@return Maybe error or nothing -Maybe knSocketChanneled_bind(knSocket* socket, knIPV4Endpoint localEndp); +Maybe knSocketChanneled_bind(knSocketChanneled* socket, knIPV4Endpoint localEndp); ///sets socket remote endpoint ///@return Maybe error or nothing -Maybe knSocketChanneled_connect(knSocket* socket, knIPV4Endpoint remoteEndp); +Maybe knSocketChanneled_connect(knSocketChanneled* socket, knIPV4Endpoint remoteEndp); -///@return Maybe new socket connected to client -Maybe knSocketChanneled_accept(knSocket* socket); +///@return Maybe new socket connected to client +Maybe knSocketChanneled_accept(knSocketChanneled* socket); ///@param dataLength 0-4294967295 ///@return Maybe -Maybe knSocketChanneled_send(knSocket* socket, uint16 destinationIndex, uint8* data, uint32 dataLength); +Maybe knSocketChanneled_send(knSocketChanneled* socket, uint16 destinationIndex, uint8* data, uint32 dataLength); ///@param buffer buffer for recieving data ///@param bufferLength 0-4294967295 ///@return Maybe recieved bytes amount -Maybe knSocketChanneled_recieve(knSocket* socket, uint16 destinationIndex, uint8* buffer, uint32 bufferLength); +Maybe knSocketChanneled_recieve(knSocketChanneled* socket, uint16 destinationIndex, uint8* buffer, uint32 bufferLength); #if __cplusplus } diff --git a/src/Network/network.h b/src/Network/network.h index 3fcdffa..8f6d999 100644 --- a/src/Network/network.h +++ b/src/Network/network.h @@ -6,7 +6,7 @@ extern "C" { #include "../base/base.h" -#if defined(_MSC_VER) || defined(_WIN64) || defined(_WIN32) || 0 +#if defined(_MSC_VER) || defined(_WIN64) || defined(_WIN32) #define KN_USE_WINSOCK 1 #endif diff --git a/src/base/type_system/ktId.h b/src/base/type_system/ktid.h similarity index 100% rename from src/base/type_system/ktId.h rename to src/base/type_system/ktid.h diff --git a/tests/test_network.c b/tests/test_network.c index 12db3f9..f2a2239 100644 --- a/tests/test_network.c +++ b/tests/test_network.c @@ -31,12 +31,13 @@ void test_network(){ test_knIPV4Address_fromStr(127,0,0,1); test_knIPV4Address_fromStr(34,255,45,0); test_knIPV4Address_fromStr(3,3,3,128); - + /* knSocket* s; tryLast(knSocket_open(knSocketProtocol_TCP), maybeS) s=maybeS.value.VoidPtr; printf("\e[92mTCP socket created\n"); tryLast(knSocket_close(s);,_); printf("\e[92mTCP socket closed\n"); + */ })); } \ No newline at end of file