aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/net/je_socket.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/net/je_socket.h')
-rw-r--r--src/libjin/net/je_socket.h144
1 files changed, 144 insertions, 0 deletions
diff --git a/src/libjin/net/je_socket.h b/src/libjin/net/je_socket.h
new file mode 100644
index 0000000..eb01719
--- /dev/null
+++ b/src/libjin/net/je_socket.h
@@ -0,0 +1,144 @@
+#ifndef __JE_NET_SOCKET_H__
+#define __JE_NET_SOCKET_H__
+#include "../core/je_configuration.h"
+#if defined(jin_net)
+
+#include "tekcos/tekcos.h"
+
+namespace JinEngine
+{
+ namespace Net
+ {
+
+ ///
+ ///
+ ///
+ enum SocketType
+ {
+ TCP,
+ UDP
+ };
+
+ ///
+ ///
+ ///
+ struct SocketInformation
+ {
+ unsigned int address;
+ unsigned short port;
+ SocketType type;
+ };
+
+ ///
+ ///
+ ///
+ class Socket
+ {
+ public:
+
+ ///
+ ///
+ ///
+ Socket() {};
+
+ ///
+ ///
+ ///
+ Socket(const Socket& socket);
+
+ ///
+ ///
+ ///
+ Socket(const SocketInformation& socketInformation);
+
+ ///
+ ///
+ ///
+ Socket(SocketType type, unsigned short port);
+
+ ///
+ ///
+ ///
+ Socket(SocketType type, unsigned int address, unsigned short port);
+
+ ///
+ ///
+ ///
+ Socket(SocketType type, const char* address, unsigned short port);
+
+ ///
+ ///
+ ///
+ ~Socket();
+
+ ///
+ ///
+ ///
+ void configureBlocking(bool bocking);
+
+ ///
+ ///
+ ///
+ Socket* accept();
+
+ ///
+ ///
+ ///
+ int receive(char* buffer, int size);
+
+ ///
+ ///
+ ///
+ int send(char* buffer, int size);
+
+ ///
+ ///
+ ///
+ void sendTo(char* buffer, int size, unsigned int address, unsigned int port);
+
+ ///
+ ///
+ ///
+ int receiveFrom(char* buffer, int size, unsigned int address, unsigned int port);
+
+ ///
+ ///
+ ///
+ void close();
+
+ protected:
+ #if jin_net == jin_net_tekcos
+
+ ///
+ ///
+ ///
+ Socket(const tk_TCPsocket& tcpHandle);
+
+ ///
+ ///
+ ///
+ Socket(const tk_UDPsocket& udpHandle);
+
+ ///
+ ///
+ ///
+ union
+ {
+ tk_TCPsocket tcpHandle;
+ tk_UDPsocket udpHandle;
+ } mHandle;
+ #endif
+
+ ///
+ ///
+ ///
+ SocketType mType;
+
+ };
+
+ } // namespace Net
+} // namespace JinEngine
+
+#endif // defined(jin_net)
+
+#endif // __JE_NET_SOCKET_H__ \ No newline at end of file