Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/proxy/src/lib/network/monitor/network_node.h @ 9583

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

integration of the networkmonitor into the shared network data, using the new getPeerByUserId

File size: 2.8 KB
Line 
1/*!
2 * @file network_node.h
3 *  a class representing a node in the network (this can be a MASTER_SERVER, PROXY_SERVER or a CLIENT
4 */
5
6#ifndef _NETWORK_NODE_H
7#define _NETWORK_NODE_H
8
9#include "base_object.h"
10#include "synchronizeable.h"
11#include "peer_info.h"
12
13#include <list>
14
15
16//!< a class representing a node in the network (this can be a MASTER_SERVER, PROXY_SERVER or a CLIENT
17class NetworkNode
18{
19  public:
20    NetworkNode(PeerInfo* pInfo);
21    ~NetworkNode();
22
23
24    void addClient(PeerInfo* node);
25    void addActiveProxyServer(PeerInfo* node);
26    void addPassiveProxyServer(PeerInfo* node);
27    void addMasterServer(PeerInfo* node);
28
29    void removeClient(PeerInfo* node);
30    void removeActiveProxyServer(PeerInfo* node);
31    void removePassiveProxyServer(PeerInfo* node);
32    void removeMasterServer(PeerInfo* node);
33
34    PeerInfo* getClient(int index) const;
35    PeerInfo* getActiveProxyServer(int index) const;
36    PeerInfo* getPassiveProxyServer(int index) const;
37    PeerInfo* getMasterServer(int index) const;
38
39    /** @returns the master server list */
40    inline std::list<PeerInfo*> getMasterServer() const { return this->masterServerList; }
41    /** @returns the active proxy server list */
42    inline std::list<PeerInfo*> getActiveProxyServer() const { return this->activeProxyServerList; }
43    /** @returns the passive proxy server list */
44    inline std::list<PeerInfo*> getPassiveProxyServer() const { return this->passiveProxyServerList; }
45    /** @returns the client list */
46    inline std::list<PeerInfo*> getClient() const { return this->clientList; }
47
48    PeerInfo* getPeerByUserId( int userId);
49
50    /** @returns the number of players */
51    inline int getPlayerNumber() const { return this->playerNumber; }
52    /** @returns the node type of this node */
53    inline int getNodeType() const { return this->peerInfo->nodeType; }
54    /** @returns the peer info of this node */
55    inline PeerInfo* getPeerInfo() const { return this->peerInfo; }
56
57    void debug(int depth) const;
58
59
60  private:
61    int                          playerNumber;                 //!< localy direct connected player number
62    int                          connectionNumber;             //!< number of connections ( can but musn't be equal players)
63    PeerInfo*                    peerInfo;                     //!< the peer information about this node
64
65    /* network nodes directly connected to this node */
66    std::list<PeerInfo*>         clientList;                   //!< list of all clients in the network
67    std::list<PeerInfo*>         activeProxyServerList;        //!< list of all proxy servers in the network
68    std::list<PeerInfo*>         passiveProxyServerList;       //!< list of all proxy servers in the network
69    std::list<PeerInfo*>         masterServerList;             //!< list of all master servers in the network (should be 1!! :D)
70
71};
72
73#endif /* _NETWORK_NODE_H */
Note: See TracBrowser for help on using the repository browser.