Changeset 7540 in orxonox.OLD for branches/network/src/lib/network/network_socket.h
- Timestamp:
- May 5, 2006, 3:16:09 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/network/src/lib/network/network_socket.h
r6994 r7540 8 8 #define _NETWORK_SOCKET 9 9 10 //TODO HACK else gdb will not work on server11 #define DONTEXITTHREADS12 13 //if you want to use outgoing buffer define _USE_OUTGOING_BUFFER14 #define _USE_OUTGOING_BUFFER15 16 #define _INCOMING_BUFFER_SIZE 202400017 #define _OUTGOING_BUFFER_SIZE 202400018 #define _LOCAL_BUFFER_SIZE 102419 //sleep if incoming buffer is full20 #define _MSECONDS_SLEEP_FULL_BUFFER 1021 //sleep if outgoing buffer is empty22 #define _MSECONDS_SLEEP_EMPTY_BUFFER 1023 24 25 /* contains memmove and memcpy */26 #include <string.h>27 28 #ifdef HAVE_SDL_H29 #include <SDL_thread.h>30 #else31 #include <SDL/SDL_thread.h>32 #endif33 10 /* include this file, it contains some default definitions */ 34 11 #include "netdefs.h" … … 38 15 #include "base_object.h" 39 16 40 /* using namespace std is default, this needs to be here */41 using namespace std;42 43 17 class NetworkSocket : public BaseObject 44 18 { 19 public: 20 NetworkSocket(); 21 virtual ~NetworkSocket(); 45 22 46 private: 47 // IPaddress serverAddress; 48 // unsigned int port; 49 TCPsocket tcpSocket; 50 // UDPsocket udpSocket; 23 /** 24 * connect to server on host with port port 25 * @param host hostname might be xxx.xxx.xxx.xxx or localhost ... 26 * @param port port to connect to 27 */ 28 virtual void connectToServer( std::string host, int port ) = 0; 29 30 /** 31 * disconnect from server 32 */ 33 virtual void disconnectServer() = 0; 51 34 52 byte incomingBuffer[_INCOMING_BUFFER_SIZE]; 53 #ifdef _USE_OUTGOING_BUFFER 54 byte outgoingBuffer[_OUTGOING_BUFFER_SIZE]; 55 #endif 56 int incomingBufferLength; 57 #ifdef _USE_OUTGOING_BUFFER 58 int outgoingBufferLength; 59 #endif 35 /** 36 * send packet to connected socket. will be recieved as whole packet 37 * @param data pointer to data to send 38 * @param length lengt of packet to send 39 * @return true on success 40 */ 41 virtual bool writePacket(byte * data, int length) = 0; 42 43 /** 44 * read a packet sent by another NetworkSocket 45 * @param data data will be copied here 46 * @param maxLength readPacket will not read more than maxLength 47 * @return bytes read. on error less than zero 48 */ 49 virtual int readPacket(byte * data, int maxLength) = 0; 60 50 61 SDL_mutex * incomingBufferMutex; 62 #ifdef _USE_OUTGOING_BUFFER 63 SDL_mutex * outgoingBufferMutex; 64 #endif 65 SDL_mutex * socketMutex; 66 bool terminateThread; 67 68 SDL_mutex* threadTerminationMutex; 69 static int thread_read(void * data); 70 bool thread_read_running; 71 bool thread_write_running; 72 73 SDL_Thread* readThread; 74 SDL_Thread* writeThread; 75 76 #ifdef _USE_OUTGOING_BUFFER 77 static int thread_write(void * data); 78 #endif 79 80 int writeBytes(byte * data, int length); 81 int readBytes(byte * data, int length); 82 int readBlock(byte * data, int length); 83 84 void init(); 85 86 public: 87 88 NetworkSocket(); 89 virtual ~NetworkSocket(); 90 NetworkSocket(IPaddress ip); 91 NetworkSocket(TCPsocket sock); 92 void destroy() { terminateThread = true; }; 93 94 95 void connectToServer(IPaddress ip); 96 void disconnectServer(); 97 98 bool writePacket(byte * data, int length); 99 int readPacket(byte * data, int maxLength); 100 101 inline bool isOk() { return tcpSocket!=NULL; } 51 /** 52 * check if socket is ok 53 * @return true if socket is ok 54 */ 55 inline bool isOk() { return this->bOk; } 56 57 protected: 58 bool bOk; //!< check for socket status 102 59 103 60 };
Note: See TracChangeset
for help on using the changeset viewer.