Created
May 5, 2013 17:10
-
-
Save Ratstail91/5521429 to your computer and use it in GitHub Desktop.
This is my idea for a minimalist networking interface. This is what I /wish/ existed. I might try and make this work, but I'm inexperienced with networking and making APIs.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#ifndef NETWORK_HPP_ | |
#define NETWORK_HPP_ | |
/* Unless noted otherwise, functions return 0 on success, or -1 on error. | |
* There are NO blocking functions. | |
* | |
* This is my idea for a minimalist networking interface. This is what I | |
* /wish/ existed. I might try and make this work, but I'm inexperienced | |
* with networking and making APIs. | |
*/ | |
#include <cstdint> | |
struct IPAddress { | |
uint32_t host; | |
uint16_t port; | |
}; | |
class TCPSocket { | |
public: | |
TCPSocket(); | |
TCPSocket(const char* ip, int port); | |
TCPSocket(IPAddress); | |
~TCPSocket(); | |
int Open(const char* ip, int port); | |
int Open(IPAddress); | |
void Close(); | |
int Send(const void* data, int len); | |
int Recv(const void* data, int maxlen); | |
private: | |
IPAddress address; | |
//socket stuff... | |
}; | |
class TCPServerSocket { | |
public: | |
TCPServerSocket(); | |
TCPServerSocket(int port); | |
~TCPServerSocket(); | |
int Open(int port); | |
void Close(); | |
/* param 1: pointer to a socket to be created. | |
* return: | |
* 1: No new connection, socket is not altered | |
* 0: New connection, socket can be used normally | |
* -1: Unknown error | |
*/ | |
int Accept(TCPSocket*); | |
private: | |
uint16_t port; | |
//socket stuff... | |
}; | |
class UDPPacket { | |
public: | |
UDPPacket(int size); | |
~UDPPakcet(); | |
int Alloc(int size); | |
int Resize(int size); | |
int Free(); | |
int GetSize(); | |
void* GetDataPtr(); | |
int SetIPAddress(const char* host, int port); | |
int SetIPAddress(IPAddress); | |
IPAddress GetIPAddress(); | |
private: | |
IPAddress address; | |
int size; | |
void* data; | |
}; | |
class UDPSocket { | |
public: | |
UDPSocket(); | |
UDPSocket(int port); | |
~UDPSocket(); | |
int Send(UDPPacket*); | |
int Recv(UDPPacket*); | |
int GetPort(); | |
private: | |
uint16_t port; | |
//socket stuff... | |
}; | |
#endif |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment