Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/network/src/lib/network/network_stream.h @ 6658

Last change on this file since 6658 was 6658, checked in by patrick, 18 years ago

network: debug function for NetworkStream and connection

File size: 2.2 KB
Line 
1/*!
2 * @file network_stream.h
3 *  implementation of a network pipe
4 */
5
6#ifndef _NETWORK_STREAM
7#define _NETWORK_STREAM
8
9#include <vector>
10#include <list>
11
12#include "data_stream.h"
13#include "network_protocol.h"
14#include "server_socket.h"
15#include "handshake.h"
16
17#define MAX_CONNECTIONS 1000
18
19class Synchronizeable;
20class NetworkSocket;
21class ServerSocket;
22class ConnectionMonitor;
23class NetworkProtocol;
24class NetworkGameManager;
25
26typedef std::list<Synchronizeable*>  SynchronizeableList;
27typedef std::vector<NetworkSocket*>  NetworkSocketVector;
28typedef std::vector<Handshake*>      HandshakeVector;
29
30
31class NetworkStream : public DataStream
32{
33
34  public:
35    NetworkStream();
36    NetworkStream(IPaddress& address);
37    NetworkStream(unsigned int port);
38
39    ~NetworkStream();
40    void init();
41
42    void connectSynchronizeable(Synchronizeable& sync);
43    void disconnectSynchronizeable(Synchronizeable& sync);
44
45    inline bool isServer() const { return (this->type == NET_SERVER)? true:false; }
46    inline bool isActive() const { return this->bActive; }
47
48    inline int getMaxConnections(){ return maxConnections; }
49    void setMaxConnections( int n );
50
51    virtual void processData();
52
53    inline SynchronizeableList::const_iterator getSyncBegin(){ return synchronizeables.begin(); }
54    inline SynchronizeableList::const_iterator getSyncEnd(){ return synchronizeables.end(); }
55    inline int getSyncCount(){ return synchronizeables.size(); }
56
57    inline bool isUserIdActive( int userID ) { if (userID>=networkSockets.size()) return false; else return networkSockets[userID]!=NULL; }
58
59    void debug();
60
61
62  private:
63    void updateConnectionList();
64
65
66  private:
67    NetworkProtocol*           networkProtocol;
68    ConnectionMonitor*         connectionMonitor;
69    SynchronizeableList        synchronizeables;
70    NetworkSocketVector        networkSockets;
71    HandshakeVector            handshakes;
72    ServerSocket*              serverSocket;
73    int                        type;
74    Header                     packetHeader;
75    bool                       bActive;
76    std::list<int>             freeSocketSlots;
77
78    int                        myHostId;
79    int                        maxConnections;
80
81    NetworkGameManager*        networkGameManager;
82};
83#endif /* _NETWORK_STREAM */
Note: See TracBrowser for help on using the repository browser.