Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

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

network: some more nodes connected to the NetworkStream no sync yet

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