completely refactored client and server side network protocol code
[rocksndiamonds.git] / src / netserv.h
index 5efcb80339f8055386c60f4257d0ee3efbc7ea06..6017557ab9b8f272347e55420dfc575df2ec2ee1 100644 (file)
@@ -1,15 +1,13 @@
-/***********************************************************
-* Rocks'n'Diamonds -- McDuffin Strikes Back!               *
-*----------------------------------------------------------*
-* (c) 1995-2002 Artsoft Entertainment                      *
-*               Holger Schemel                             *
-*               Detmolder Strasse 189                      *
-*               33604 Bielefeld                            *
-*               Germany                                    *
-*               e-mail: info@artsoft.org                   *
-*----------------------------------------------------------*
-* netserv.h                                                *
-***********************************************************/
+// ============================================================================
+// Rocks'n'Diamonds - McDuffin Strikes Back!
+// ----------------------------------------------------------------------------
+// (c) 1995-2014 by Artsoft Entertainment
+//                         Holger Schemel
+//                 info@artsoft.org
+//                 http://www.artsoft.org/
+// ----------------------------------------------------------------------------
+// netserv.h
+// ============================================================================
 
 #ifndef NETSERV_H
 #define NETSERV_H
@@ -18,9 +16,9 @@
 
 #define DEFAULT_SERVER_PORT    19504
 
-#define PROTOCOL_VERSION_1     1
-#define PROTOCOL_VERSION_2     2
-#define PROTOCOL_VERSION_3     0
+#define PROTOCOL_VERSION_MAJOR 2
+#define PROTOCOL_VERSION_MINOR 0
+#define PROTOCOL_VERSION_PATCH 0
 
 #define OP_PROTOCOL_VERSION    1
 #define OP_BAD_PROTOCOL_VERSION        2
 
 #define MAX_BUFFER_SIZE                4096
 
-#if defined(TARGET_SDL)
-int NetworkServerThread(void *);
-#endif
 
+struct NetworkBuffer
+{
+  unsigned int max_size;
+  unsigned int size;
+  unsigned int pos;
+
+  byte *buffer;
+};
+
+
+int getNetwork8BitInteger(byte *);
+int putNetwork8BitInteger(byte *, int);
+int getNetwork16BitInteger(byte *);
+int putNetwork16BitInteger(byte *, int);
+int getNetwork32BitInteger(byte *);
+int putNetwork32BitInteger(byte *, int);
+char *getNetworkString(byte *);
+int putNetworkString(byte *, char *);
+
+struct NetworkBuffer *newNetworkBuffer();
+void initNetworkBufferForReceiving(struct NetworkBuffer *);
+void initNetworkBufferForReading(struct NetworkBuffer *);
+void initNetworkBufferForWriting(struct NetworkBuffer *, int, int);
+
+int receiveNetworkBufferBytes(struct NetworkBuffer *, TCPsocket, int);
+int receiveNetworkBufferPacket(struct NetworkBuffer *, TCPsocket);
+
+int getNetworkBuffer8BitInteger(struct NetworkBuffer *);
+void putNetworkBuffer8BitInteger(struct NetworkBuffer *, int);
+int getNetworkBuffer16BitInteger(struct NetworkBuffer *);
+void putNetworkBuffer16BitInteger(struct NetworkBuffer *, int);
+int getNetworkBuffer32BitInteger(struct NetworkBuffer *);
+void putNetworkBuffer32BitInteger(struct NetworkBuffer *, int);
+char *getNetworkBufferString(struct NetworkBuffer *);
+void putNetworkBufferString(struct NetworkBuffer *, char *);
+
+int NetworkServerThread(void *);
 void NetworkServer(int, int);
 
 #endif