Files
CgeNet/CgeNet.h
Mikhail Romanko aec33ef3d8
Some checks failed
CI / build-and-analyze (push) Failing after 1m57s
Initial commit
2026-08-08 16:02:20 +03:00

103 lines
2.6 KiB
C

#ifndef CGE_NET_H
#define CGE_NET_H
#include <stdint.h>
#include <stddef.h>
enum CgeNetCode {
CGE_NET_EOK,
CGE_NET_EUNKNOWN,
CGE_NET_EINVAL,
CGE_NET_ENOMEM,
CGE_NET_EADDRINUSE,
CGE_NET_EADDRNOTAVAIL,
CGE_NET_ECONNREFUSED,
CGE_NET_ECONNRESET,
CGE_NET_ECONNABORTED,
CGE_NET_ENETUNREACH,
CGE_NET_EHOSTUNREACH,
CGE_NET_ETIMEDOUT,
CGE_NET_EWOULDBLOCK,
CGE_NET_EDISCONNECT,
};
enum CgeNetDomain {
CGE_NET_IPV4,
CGE_NET_IPV6
};
enum CgeNetType {
CGE_NET_TCP,
CGE_NET_UDP,
};
enum CgeNetEvent {
CGE_NET_READABLE = (1 << 0),
CGE_NET_WRITABLE = (1 << 1),
};
struct CgeNetIPv4 {
int type;
uint8_t addr[4];
uint16_t port;
};
struct CgeNetIPv6 {
int type;
uint8_t addr[16];
uint16_t port;
};
typedef union CgeNetAddr {
int type;
struct CgeNetIPv4 ipv4;
struct CgeNetIPv6 ipv6;
} CgeNetAddr;
typedef struct CgeNetSocket CgeNetSocket;
typedef struct CgeNetPoll CgeNetPoll;
typedef void (*CgeNetCallback)(CgeNetSocket *, int event);
int CgeNetAddrFromStr(const char *str, uint16_t port, CgeNetAddr *addr);
int CgeNetInit(void);
void CgeNetCleanup(void);
CgeNetSocket *CgeNetOpen(int domain, int type, int *result);
void CgeNetClose(CgeNetSocket *socket);
int CgeNetErrorCode(CgeNetSocket *socket);
int CgeNetFetchError(CgeNetSocket *socket);
int CgeNetSetBlocking(CgeNetSocket *socket, int value);
int CgeNetBind(CgeNetSocket *socket, const CgeNetAddr *addr);
int CgeNetListen(CgeNetSocket *socket, unsigned int backlog);
CgeNetSocket *CgeNetAccept(CgeNetSocket *socket, CgeNetAddr *addr);
int CgeNetConnect(CgeNetSocket *socket, const CgeNetAddr *addr);
int CgeNetWrite(CgeNetSocket *socket, const void *buffer, size_t size,
size_t *actual);
int CgeNetRead(CgeNetSocket *socket, void *buffer, size_t size,
size_t *actual);
int CgeNetPeek(CgeNetSocket *socket, void *buffer, size_t size, size_t *actual);
int CgeNetWriteTo(CgeNetSocket *socket, const CgeNetAddr *addr,
const void *buffer, size_t size, size_t *actual);
int CgeNetReadFrom(CgeNetSocket *socket, CgeNetAddr* addr, void *buffer,
size_t size, size_t *actual);
void *CgeNetContext(CgeNetSocket *socket);
void CgeNetSetContext(CgeNetSocket *socket, void *data);
CgeNetPoll *CgeNetPollCreate(int *result);
int CgeNetPollErrorCode(CgeNetPoll *poll);
void CgeNetPollFree(CgeNetPoll* poll);
int CgeNetPollAdd(CgeNetPoll *poll, CgeNetSocket *socket,
CgeNetCallback callback, int events);
int CgeNetPollRemove(CgeNetPoll *poll, CgeNetSocket *socket);
int CgeNetPollWait(CgeNetPoll *poll, int timeout);
#endif /* CGE_NET_H */