This commit is contained in:
102
CgeNet.h
Normal file
102
CgeNet.h
Normal file
@@ -0,0 +1,102 @@
|
||||
#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 */
|
||||
Reference in New Issue
Block a user