-#include "UDPConnection.h"
#include "UDPC_Defines.hpp"
+#include "UDPConnection.h"
-UDPC::Context::Context(bool isThreaded) :
-_contextIdentifier(UDPC_CONTEXT_IDENTIFIER),
-flags(),
-isAcceptNewConnections(true),
-protocolID(UDPC_DEFAULT_PROTOCOL_ID),
+UDPC::Context::Context(bool isThreaded)
+ : _contextIdentifier(UDPC_CONTEXT_IDENTIFIER), flags(),
+ isAcceptNewConnections(true), protocolID(UDPC_DEFAULT_PROTOCOL_ID),
#ifndef NDEBUG
-loggingType(INFO)
+ loggingType(INFO)
#else
-loggingType(WARNING)
+ loggingType(WARNING)
#endif
{
- if(isThreaded) {
+ if (isThreaded) {
flags.set(0);
} else {
flags.reset(0);
}
bool UDPC::VerifyContext(void *ctx) {
- if(ctx == nullptr) {
+ if (ctx == nullptr) {
return false;
}
- UDPC::Context* c = (UDPC::Context*) ctx;
- if(c->_contextIdentifier == UDPC_CONTEXT_IDENTIFIER) {
+ UDPC::Context *c = (UDPC::Context *)ctx;
+ if (c->_contextIdentifier == UDPC_CONTEXT_IDENTIFIER) {
return true;
} else {
return false;
}
}
-void* UDPC_init(uint16_t listenPort, uint32_t listenAddr, int isClient) {
+void *UDPC_init(uint16_t listenPort, uint32_t listenAddr, int isClient) {
UDPC::Context *ctx = new UDPC::Context(false);
return ctx;
}
-void* UDPC_init_threaded_update(uint16_t listenPort, uint32_t listenAddr, int isClient) {
+void *UDPC_init_threaded_update(uint16_t listenPort, uint32_t listenAddr,
+ int isClient) {
UDPC::Context *ctx = new UDPC::Context(true);
return ctx;
void UDPC_destroy(void *ctx) {
if (UDPC::VerifyContext(ctx)) {
- delete (UDPC::Context*)ctx;
+ delete (UDPC::Context *)ctx;
}
}
void UDPC_update(void *ctx) {
- if(!UDPC::VerifyContext(ctx)) {
+ if (!UDPC::VerifyContext(ctx)) {
return;
}
- UDPC::Context *c = (UDPC::Context*)ctx;
- if(c->flags.test(0)) {
+ UDPC::Context *c = (UDPC::Context *)ctx;
+ if (c->flags.test(0)) {
// is threaded, update should not be called
return;
}
}
int UDPC_get_queue_send_available(void *ctx, uint32_t addr) {
- if(!UDPC::VerifyContext(ctx)) {
+ if (!UDPC::VerifyContext(ctx)) {
return 0;
}
- UDPC::Context *c = (UDPC::Context*)ctx;
+ UDPC::Context *c = (UDPC::Context *)ctx;
// TODO impl
return 0;
}
-void UDPC_queue_send(void *ctx, uint32_t destAddr, uint16_t destPort, uint32_t isChecked, void *data, uint32_t size) {
- if(!UDPC::VerifyContext(ctx)) {
+void UDPC_queue_send(void *ctx, uint32_t destAddr, uint16_t destPort,
+ uint32_t isChecked, void *data, uint32_t size) {
+ if (!UDPC::VerifyContext(ctx)) {
return;
}
- UDPC::Context *c = (UDPC::Context*)ctx;
+ UDPC::Context *c = (UDPC::Context *)ctx;
// TODO impl
}
int UDPC_set_accept_new_connections(void *ctx, int isAccepting) {
- if(!UDPC::VerifyContext(ctx)) {
+ if (!UDPC::VerifyContext(ctx)) {
return 0;
}
- UDPC::Context *c = (UDPC::Context*)ctx;
+ UDPC::Context *c = (UDPC::Context *)ctx;
return c->isAcceptNewConnections.exchange(isAccepting == 0 ? false : true);
}
int UDPC_drop_connection(void *ctx, uint32_t addr, uint16_t port) {
- if(!UDPC::VerifyContext(ctx)) {
+ if (!UDPC::VerifyContext(ctx)) {
return 0;
}
- UDPC::Context *c = (UDPC::Context*)ctx;
+ UDPC::Context *c = (UDPC::Context *)ctx;
// TODO impl
return 0;
}
uint32_t UDPC_set_protocol_id(void *ctx, uint32_t id) {
- if(!UDPC::VerifyContext(ctx)) {
+ if (!UDPC::VerifyContext(ctx)) {
return 0;
}
- UDPC::Context *c = (UDPC::Context*)ctx;
+ UDPC::Context *c = (UDPC::Context *)ctx;
return c->protocolID.exchange(id);
}
UDPC_LoggingType set_logging_type(void *ctx, UDPC_LoggingType loggingType) {
- if(!UDPC::VerifyContext(ctx)) {
+ if (!UDPC::VerifyContext(ctx)) {
return static_cast<UDPC_LoggingType>(0);
}
- UDPC::Context *c = (UDPC::Context*)ctx;
+ UDPC::Context *c = (UDPC::Context *)ctx;
return static_cast<UDPC_LoggingType>(c->loggingType.exchange(loggingType));
}
PacketInfo UDPC_get_received(void *ctx) {
- if(!UDPC::VerifyContext(ctx)) {
+ if (!UDPC::VerifyContext(ctx)) {
return PacketInfo{{0}, 0, 0, 0, 0, 0};
}
- UDPC::Context *c = (UDPC::Context*)ctx;
+ UDPC::Context *c = (UDPC::Context *)ctx;
// TODO impl
return PacketInfo{{0}, 0, 0, 0, 0, 0};
}
-const char* UDPC_atostr(void *ctx, uint32_t addr) {
- if(!UDPC::VerifyContext(ctx)) {
+const char *UDPC_atostr(void *ctx, uint32_t addr) {
+ if (!UDPC::VerifyContext(ctx)) {
return nullptr;
}
- UDPC::Context *c = (UDPC::Context*)ctx;
+ UDPC::Context *c = (UDPC::Context *)ctx;
int index = 0;
- for(int x = 0; x < 4; ++x)
- {
+ for (int x = 0; x < 4; ++x) {
unsigned char temp = (addr >> (x * 8)) & 0xFF;
- if(temp >= 100)
- {
+ if (temp >= 100) {
c->atostrBuf[index++] = '0' + temp / 100;
}
- if(temp >= 10)
- {
+ if (temp >= 10) {
c->atostrBuf[index++] = '0' + ((temp / 10) % 10);
}
c->atostrBuf[index++] = '0' + temp % 10;
- if(x < 3)
- {
+ if (x < 3) {
c->atostrBuf[index++] = '.';
}
}
uint32_t addr = 0;
uint32_t temp = 0;
uint32_t index = 0;
- while(*addrStr != 0)
- {
- if(*addrStr >= '0' && *addrStr <= '9')
- {
+ while (*addrStr != 0) {
+ if (*addrStr >= '0' && *addrStr <= '9') {
temp *= 10;
temp += *addrStr - '0';
- }
- else if(*addrStr == '.' && temp <= 0xFF && index < 3)
- {
+ } else if (*addrStr == '.' && temp <= 0xFF && index < 3) {
addr |= (temp << (8 * index++));
temp = 0;
- }
- else
- {
+ } else {
return 0;
}
++addrStr;
}
- if(index == 3 && temp <= 0xFF)
- {
+ if (index == 3 && temp <= 0xFF) {
addr |= temp << 24;
return addr;
- }
- else
- {
+ } else {
return 0;
}
}
#define UDPC_PLATFORM_UNKNOWN 0
#if defined _WIN32
- #define UDPC_PLATFORM UDPC_PLATFORM_WINDOWS
+#define UDPC_PLATFORM UDPC_PLATFORM_WINDOWS
#elif defined __APPLE__
- #define UDPC_PLATFORM UDPC_PLATFORM_MAC
+#define UDPC_PLATFORM UDPC_PLATFORM_MAC
#elif defined __linux__
- #define UDPC_PLATFORM UDPC_PLATFORM_LINUX
+#define UDPC_PLATFORM UDPC_PLATFORM_LINUX
#else
- #define UDPC_PLATFORM UDPC_PLATFORM_UNKNOWN
+#define UDPC_PLATFORM UDPC_PLATFORM_UNKNOWN
#endif
// OS-based networking macros
#if UDPC_PLATFORM == UDPC_PLATFORM_WINDOWS
- #include <winsock2.h>
+#include <winsock2.h>
- #define CleanupSocket(x) closesocket(x)
+#define CleanupSocket(x) closesocket(x)
#elif UDPC_PLATFORM == UDPC_PLATFORM_MAC || UDPC_PLATFORM == UDPC_PLATFORM_LINUX
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <fcntl.h>
- #include <unistd.h>
+#include <fcntl.h>
+#include <netinet/in.h>
+#include <sys/socket.h>
+#include <unistd.h>
- #define CleanupSocket(x) close(x)
+#define CleanupSocket(x) close(x)
#else
- #define CleanupSocket(x) ((void)0)
+#define CleanupSocket(x) ((void)0)
#endif
// other defines
#define UDPC_DEFAULT_PROTOCOL_ID 1357924680
#ifdef __cplusplus
-# include <cstdint>
+#include <cstdint>
extern "C" {
#else
-# include <stdint.h>
+#include <stdint.h>
#endif
-typedef enum {
- SILENT,
- ERROR,
- WARNING,
- VERBOSE,
- INFO
-} UDPC_LoggingType;
+typedef enum { SILENT, ERROR, WARNING, VERBOSE, INFO } UDPC_LoggingType;
typedef struct {
char data[UDPC_PACKET_MAX_SIZE];
uint16_t receiverPort;
} PacketInfo;
-void* UDPC_init(uint16_t listenPort, uint32_t listenAddr, int isClient);
-void* UDPC_init_threaded_update(uint16_t listenPort, uint32_t listenAddr, int isClient);
+void *UDPC_init(uint16_t listenPort, uint32_t listenAddr, int isClient);
+void *UDPC_init_threaded_update(uint16_t listenPort, uint32_t listenAddr,
+ int isClient);
void UDPC_destroy(void *ctx);
int UDPC_get_queue_send_available(void *ctx, uint32_t addr);
-void UDPC_queue_send(void *ctx, uint32_t destAddr, uint16_t destPort, uint32_t isChecked, void *data, uint32_t size);
+void UDPC_queue_send(void *ctx, uint32_t destAddr, uint16_t destPort,
+ uint32_t isChecked, void *data, uint32_t size);
int UDPC_set_accept_new_connections(void *ctx, int isAccepting);
PacketInfo UDPC_get_received(void *ctx);
-const char* UDPC_atostr(void *ctx, uint32_t addr);
+const char *UDPC_atostr(void *ctx, uint32_t addr);
uint32_t UDPC_strtoa(const char *addrStr);