Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jul 20, 2006, 11:43:27 AM (19 years ago)
Author:
bensch
Message:

orxonox/proxy: merged the proxy.old back again, and it seems to work.

Merged with command
svn merge -r9247:HEAD https://svn.orxonox.net/orxonox/branches/proxy.old .

no conflicts

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/proxy/src/lib/network/network_stream.h

    r9246 r9347  
    1414#include "server_socket.h"
    1515#include "handshake.h"
    16 #include "connection_monitor.h"
     16#include "monitor/connection_monitor.h"
    1717#include "udp_server_socket.h"
     18#include "peer_info.h"
     19
     20#include "shared_network_data.h"
    1821
    1922class Synchronizeable;
     
    2124class ServerSocket;
    2225class NetworkGameManager;
     26class NetworkMonitor;
    2327
    24 //!< this structure contains informations about the network node
    25 class PeerInfo
    26 {
    27   public:
    28     PeerInfo() { clear(); }
    29     void clear() { userId = 0; isServer = false; socket = NULL; handshake = NULL; lastAckedState = 0; lastRecvedState = 0; connectionMonitor = NULL; }
    30 
    31 
    32   public:
    33     int                 userId;
    34     bool                isServer;
    35     NetworkSocket *     socket;
    36     Handshake *         handshake;
    37     ConnectionMonitor * connectionMonitor;
    38     int                 lastAckedState;
    39     int                 lastRecvedState;
    40 };
    4128
    4229typedef std::list<Synchronizeable*>  SynchronizeableList;
     
    5845    void startHandshake();
    5946
     47    /* synchronizeable interface */
    6048    void connectSynchronizeable(Synchronizeable& sync);
    6149    void disconnectSynchronizeable(Synchronizeable& sync);
    6250
    63     inline bool isServer() const { return (this->type == NET_SERVER)? true:false; }
    64     inline bool isActive() const { return this->bActive; }
     51    /* functions for the localhost settings */
     52    inline bool isMasterServer() const { return (this->pInfo->nodeType == NET_MASTER_SERVER)? true:false; }
     53    inline bool isProxyServer() const { return (this->pInfo->nodeType == NET_PROXY_SERVER_ACTIVE)? true:false; }
     54    inline bool isClient() const { return (this->pInfo->nodeType == NET_CLIENT)? true:false; }
     55//     inline bool isActive() const { return this->bActive; }
     56    inline int getMaxConnections(){ return SharedNetworkData::getInstance()->getMaxPlayer(); }
    6557
    66     inline int getMaxConnections(){ return MAX_CONNECTIONS; }
     58    /* functions for the peerInfo information retreival */
     59    inline bool isUserIdActive( int userID ) { return (peers.find(userID) != peers.end()); }
     60    inline bool isUserMasterServer( int userID ){ if ( !isUserIdActive(userID) ) return false; return peers[userID].isMasterServer(); }
     61    inline bool isUserProxyServer( int userID ){ if ( !isUserIdActive(userID) ) return false; return peers[userID].isProxyServer(); }
     62    inline bool isUserClient( int userID ){ if ( !isUserIdActive(userID) ) return false; return peers[userID].isClient(); }
    6763
     64    /* peering interface */
     65    inline PeerInfo & getPeerInfo( int userId ) { return peers[userId]; }
     66    inline PeerInfo* getPeerInfo() { return this->pInfo; }
     67    inline PeerList getPeerInfoList() { return this->peers; }
     68
     69    /* data processing*/
    6870    virtual void processData();
     71
     72    /* debugging */
     73    void debug();
     74
     75
     76  private:
    6977
    7078    inline SynchronizeableList::const_iterator getSyncBegin(){ return synchronizeables.begin(); }
    7179    inline SynchronizeableList::const_iterator getSyncEnd(){ return synchronizeables.end(); }
     80    void cleanUpOldSyncList();
    7281    int getSyncCount();
    7382
    74     inline bool isUserIdActive( int userID ) { return (peers.find(userID) != peers.end()); }
    75     inline bool isUserServer( int userID ){ if ( !isUserIdActive(userID) ) return false; return peers[userID].isServer; }
    76 
    77     void debug();
    78 
    79     inline PeerInfo & getPeerInfo( int userId ) { return peers[userId]; }
    80 
    81 
    82   private:
    8383    void updateConnectionList();
     84    /* handle processes */
    8485    void handleHandshakes();
    8586    void handleUpstream( int tick );
    8687    void handleDownstream(int tick );
     88
     89    /* handle events*/
    8790    void handleNewClient( int userId );
    88     void cleanUpOldSyncList();
     91    void handleReconnect( int userId );
    8992
    9093    void writeToNewDict( byte * data, int length, bool upstream );
     
    9295
    9396  private:
    94     SynchronizeableList        synchronizeables;
    95     PeerList                   peers;
    96     ServerSocket*              serverSocket;
    97     int                        type;
    98     bool                       bActive;
    99     std::list<int>             freeSocketSlots;
     97    PeerList                   peers;                       //!< list of the network node informations
    10098
    101     int                        myHostId;
     99    PeerInfo*                  pInfo;                       //!< the info about the local peer node (not in the PeerList)
    102100
     101    std::list<int>             freeSocketSlots;             //!< list of free sockets (to ensure not to resycle sockets)
    103102    int                        currentState;                //!< current state id
    104103
    105     NetworkGameManager*        networkGameManager;
     104    NetworkMonitor*            networkMonitor;              //!< the network monitor
     105    NetworkGameManager*        networkGameManager;          //!< reference to the network game manager
     106    ServerSocket*              serverSocket;                //!< the listening socket of the server
    106107
    107108    std::map<int,int>          oldSynchronizeables;         //!< used to save recently deleted sync ids to not recreate them
     109    SynchronizeableList        synchronizeables;            //!< list of the synchronizeables
    108110
    109111    byte                       buf[UDP_PACKET_SIZE];        //!< used by handleUp/Downstream
    110112    byte                       compBuf[UDP_PACKET_SIZE];    //!< used by handleUp/Downstream
    111 
    112113    int                        remainingBytesToWriteToDict; //!< if > 0 NetworkStream will write packets to DATA/dicts/newdict
    113114
    114     int dictServer;
    115     int dictClient;
     115    int                        dictServer;                  //!< the zip dict for the server
     116    int                        dictClient;                  //!< the zip dict for the client
    116117};
    117118#endif /* _NETWORK_STREAM */
Note: See TracChangeset for help on using the changeset viewer.