Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 19, 2010, 2:27:06 PM (13 years ago)
Author:
scheusso
Message:

some () structural changes
some functional changes (GamestateClient replaced through GamestateManager on client)
reliable packets get buffered until a recent gamestate arrived and got processed

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/network5/src/libraries/network/GamestateManager.h

    r7759 r7777  
    4747#include "core/CorePrereqs.h"
    4848#include "packet/Gamestate.h"
     49#include <boost/concept_check.hpp>
    4950
    5051namespace orxonox
     
    6768  * @author Oliver Scheuss
    6869  */
    69   class _NetworkExport GamestateManager: public GamestateHandler{
     70  class _NetworkExport GamestateManager: public GamestateHandler
     71  {
     72    struct peerInfo
     73    {
     74      uint32_t  peerID;
     75      uint32_t  lastProcessedGamestateID;
     76      uint32_t  lastAckedGamestateID;
     77      bool      isSynched;
     78      std::map< uint32_t, packet::Gamestate* > gamestates;
     79    };
     80   
    7081  public:
     82   
    7183    GamestateManager();
    7284    ~GamestateManager();
    7385
    74     virtual bool      add(packet::Gamestate *gs, unsigned int clientID);
    75     virtual bool      ack(unsigned int gamestateID, unsigned int clientID);
    76     virtual uint32_t  getLastProcessedGamestateID( unsigned int clientID );
    77     virtual uint32_t  getCurrentGamestateID(){ return reference->getID(); }
     86    virtual bool      addGamestate(packet::Gamestate *gs, unsigned int peerID);
     87    virtual bool      ackGamestate(unsigned int gamestateID, unsigned int peerID);
     88    virtual uint32_t  getLastProcessedGamestateID( unsigned int peerID );
     89    virtual uint32_t  getCurrentGamestateID(){ return currentGamestate_->getID(); }
    7890   
    7991    bool processGamestates();
    8092    bool update();
    81     void sendGamestates();
    82 //     packet::Gamestate *popGameState(unsigned int clientID);
    83     void finishGamestate( unsigned int clientID, packet::Gamestate*& destgamestate, packet::Gamestate* base, packet::Gamestate* gamestate );
     93    std::vector<packet::Gamestate*> getGamestates();
     94    void finishGamestate( unsigned int peerID, packet::Gamestate*& destgamestate, packet::Gamestate* base, packet::Gamestate* gamestate );
    8495
    8596    bool getSnapshot();
    8697
    87     void removeClient(ClientInformation *client);
     98    void addPeer( uint32_t peerID );
     99    void setSynched( uint32_t peerID )
     100      { assert(peerMap_.find(peerID)!=peerMap_.end()); peerMap_[peerID].isSynched = true; }
     101    void removePeer( uint32_t peerID );
     102//     void removeClient(ClientInformation *client);
    88103  private:
    89104    bool processGamestate(packet::Gamestate *gs);
    90105
    91     std::map<unsigned int, std::map<unsigned int, packet::Gamestate*> > gamestateMap_;
     106//     std::map<unsigned int, std::map<unsigned int, packet::Gamestate*> > gamestateMap_;
    92107    std::map<unsigned int, packet::Gamestate*> gamestateQueue;
    93     std::map<unsigned int, uint32_t> lastProcessedGamestateID_;
    94     packet::Gamestate *reference;
    95     TrafficControl *trafficControl_;
     108//     std::map<unsigned int, uint32_t> lastProcessedGamestateID_;
     109    std::map<uint32_t, peerInfo> peerMap_;
     110    packet::Gamestate* currentGamestate_;
     111//     TrafficControl *trafficControl_;
    96112    unsigned int id_;
    97113//     boost::mutex* threadMutex_;
Note: See TracChangeset for help on using the changeset viewer.