some small changes
This commit is contained in:
parent
af758fc318
commit
abfbc7eaa2
@ -0,0 +1 @@
|
|||||||
|
# kerep network
|
||||||
@ -11,7 +11,7 @@ Maybe knIPV4Address_fromStr(char* addrStr){
|
|||||||
c=*addrStr++;
|
c=*addrStr++;
|
||||||
switch (c){
|
switch (c){
|
||||||
case '\0':
|
case '\0':
|
||||||
if(i<3) {
|
if(i<3){
|
||||||
errmsg_extra="end of string";
|
errmsg_extra="end of string";
|
||||||
goto default_case;
|
goto default_case;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,7 +26,6 @@ typedef struct knIPV4Endpoint {
|
|||||||
|
|
||||||
#define knIPV4Endpoint_create(ADDR, PORT) (knIPV4Endpoint){ADDR, PORT}
|
#define knIPV4Endpoint_create(ADDR, PORT) (knIPV4Endpoint){ADDR, PORT}
|
||||||
|
|
||||||
|
|
||||||
#if __cplusplus
|
#if __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
21
src/Network/knChanneledSocket.h
Normal file
21
src/Network/knChanneledSocket.h
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#if __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "knSocket.h"
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct knChanneledSocket{
|
||||||
|
union {
|
||||||
|
knSocket;
|
||||||
|
knSocket base;
|
||||||
|
};
|
||||||
|
uint16 channelsAmount;
|
||||||
|
knChannel** channels;
|
||||||
|
} knChanneledSocket;
|
||||||
|
|
||||||
|
#if __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,2 @@
|
|||||||
#include "knPackage.h"
|
#include "knPackage.h"
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -40,7 +40,6 @@ typedef struct knChannel {
|
|||||||
knPackageQueueElem* queueStart;
|
knPackageQueueElem* queueStart;
|
||||||
} knChannel;
|
} knChannel;
|
||||||
|
|
||||||
|
|
||||||
#if __cplusplus
|
#if __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -2,7 +2,7 @@
|
|||||||
#include "stdSocketHeaders.h"
|
#include "stdSocketHeaders.h"
|
||||||
|
|
||||||
|
|
||||||
Maybe knSocket_open(knSocketType sockType){
|
Maybe knSocket_open(knSocketProtocol sockType){
|
||||||
knSocket* newSocket=malloc(sizeof(knSocket));
|
knSocket* newSocket=malloc(sizeof(knSocket));
|
||||||
newSocket->type=sockType;
|
newSocket->type=sockType;
|
||||||
newSocket->channels=NULL;
|
newSocket->channels=NULL;
|
||||||
@ -13,12 +13,12 @@ Maybe knSocket_open(knSocketType sockType){
|
|||||||
default:
|
default:
|
||||||
safethrow("unknown socket type", free(newSocket));
|
safethrow("unknown socket type", free(newSocket));
|
||||||
break;
|
break;
|
||||||
case knSocketType_TCP:
|
case knSocketProtocol_TCP:
|
||||||
newSocket->socketfd=socket(AF_INET, SOCK_STREAM, 0);
|
newSocket->socketfd=socket(AF_INET, SOCK_STREAM, 0);
|
||||||
if(newSocket->socketfd==-1)
|
if(newSocket->socketfd==-1)
|
||||||
safethrow("can't create TCP socket", free(newSocket));
|
safethrow("can't create TCP socket", free(newSocket));
|
||||||
break;
|
break;
|
||||||
case knSocketType_UDP:
|
case knSocketProtocol_UDP:
|
||||||
newSocket->socketfd=socket(AF_INET, SOCK_DGRAM, 0);
|
newSocket->socketfd=socket(AF_INET, SOCK_DGRAM, 0);
|
||||||
if(newSocket->socketfd==-1)
|
if(newSocket->socketfd==-1)
|
||||||
safethrow("can't create UDP socket", free(newSocket));
|
safethrow("can't create UDP socket", free(newSocket));
|
||||||
|
|||||||
@ -9,21 +9,21 @@ extern "C" {
|
|||||||
#include "knPackage.h"
|
#include "knPackage.h"
|
||||||
|
|
||||||
|
|
||||||
typedef enum __attribute__((__packed__)) knSocketType {
|
typedef enum __attribute__((__packed__)) knSocketProtocol {
|
||||||
knSocketType_TCP, knSocketType_UDP
|
knSocketProtocol_TCP, knSocketProtocol_UDP, knSocket_Channeled
|
||||||
} knSocketType;
|
} knSocketProtocol;
|
||||||
|
|
||||||
typedef struct knSocket {
|
typedef struct knSocket {
|
||||||
knSocketType type;
|
knSocketProtocol type;
|
||||||
uint16 channelsAmount;
|
|
||||||
knChannel** channels;
|
|
||||||
int64 socketfd;
|
int64 socketfd;
|
||||||
knIPV4Endpoint localEndpoint;
|
knIPV4Endpoint localEndpoint;
|
||||||
knIPV4Endpoint remoteEndpoint;
|
knIPV4Endpoint remoteEndpoint;
|
||||||
|
// uint16 channelsAmount;
|
||||||
|
// knChannel** channels;
|
||||||
} knSocket;
|
} knSocket;
|
||||||
|
|
||||||
///@return Maybe<knSocket*> new socket
|
///@return Maybe<knSocket*> new socket
|
||||||
Maybe knSocket_open(knSocketType sockType);
|
Maybe knSocket_open(knSocketProtocol sockType);
|
||||||
|
|
||||||
///@return Maybe<void> error or nothing
|
///@return Maybe<void> error or nothing
|
||||||
Maybe knSocket_close(knSocket* socket);
|
Maybe knSocket_close(knSocket* socket);
|
||||||
|
|||||||
@ -13,6 +13,7 @@ extern "C" {
|
|||||||
#include "knAddress.h"
|
#include "knAddress.h"
|
||||||
#include "knPackage.h"
|
#include "knPackage.h"
|
||||||
#include "knSocket.h"
|
#include "knSocket.h"
|
||||||
|
#include "knChanneledSocket.h"
|
||||||
|
|
||||||
#if __cplusplus
|
#if __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@ extern "C" {
|
|||||||
|
|
||||||
#include "network.h"
|
#include "network.h"
|
||||||
|
|
||||||
|
|
||||||
#if KN_USE_WINSOCK
|
#if KN_USE_WINSOCK
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
#else
|
#else
|
||||||
|
|||||||
@ -33,7 +33,7 @@ void test_network(){
|
|||||||
test_knIPV4Address_fromStr(3,3,3,128);
|
test_knIPV4Address_fromStr(3,3,3,128);
|
||||||
|
|
||||||
knSocket* s;
|
knSocket* s;
|
||||||
tryLast(knSocket_open(knSocketType_TCP), maybeS)
|
tryLast(knSocket_open(knSocketProtocol_TCP), maybeS)
|
||||||
s=maybeS.value.VoidPtr;
|
s=maybeS.value.VoidPtr;
|
||||||
printf("\e[92mTCP socket created\n");
|
printf("\e[92mTCP socket created\n");
|
||||||
tryLast(knSocket_close(s);,_);
|
tryLast(knSocket_close(s);,_);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user