Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 5, 2006, 3:16:09 PM (18 years ago)
Author:
rennerc
Message:

implemented udp sockets

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/network/src/lib/network/network_socket.h

    r6994 r7540  
    88#define _NETWORK_SOCKET
    99
    10 //TODO HACK else gdb will not work on server
    11 #define DONTEXITTHREADS
    12 
    13 //if you want to use outgoing buffer define _USE_OUTGOING_BUFFER
    14 #define _USE_OUTGOING_BUFFER
    15 
    16 #define _INCOMING_BUFFER_SIZE 2024000
    17 #define _OUTGOING_BUFFER_SIZE 2024000
    18 #define _LOCAL_BUFFER_SIZE 1024
    19 //sleep if incoming buffer is full
    20 #define _MSECONDS_SLEEP_FULL_BUFFER 10
    21 //sleep if outgoing buffer is empty
    22 #define _MSECONDS_SLEEP_EMPTY_BUFFER 10
    23 
    24 
    25 /* contains memmove and memcpy */
    26 #include <string.h>
    27 
    28 #ifdef HAVE_SDL_H
    29  #include <SDL_thread.h>
    30 #else
    31  #include <SDL/SDL_thread.h>
    32 #endif
    3310/* include this file, it contains some default definitions */
    3411#include "netdefs.h"
     
    3815#include "base_object.h"
    3916
    40 /* using namespace std is default, this needs to be here */
    41 using namespace std;
    42 
    4317class NetworkSocket : public BaseObject
    4418{
     19  public:
     20    NetworkSocket();
     21    virtual ~NetworkSocket();
    4522
    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;
    5134
    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;
    6050
    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
    10259
    10360};
Note: See TracChangeset for help on using the changeset viewer.