Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 25, 2015, 1:37:50 PM (9 years ago)
Author:
landauf
Message:

moved static maps from NetworkFunctionStatic and NetworkMemberFunctionBase to NetworkFunctionManager

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/core7/src/libraries/network/NetworkFunction.cc

    r10470 r10471  
    3232namespace orxonox
    3333{
    34   std::map<NetworkFunctionPointer, NetworkMemberFunctionBase*> NetworkMemberFunctionBase::functorMap_;
    35   std::map<uint32_t, NetworkMemberFunctionBase*> NetworkMemberFunctionBase::idMap_;
     34    NetworkFunctionBase::NetworkFunctionBase(const std::string& name, const NetworkFunctionPointer& p)
     35    {
     36        static uint32_t networkID = 0;
     37        this->networkID_ = networkID++;
    3638
    37   NetworkFunctionBase::NetworkFunctionBase(const std::string& name)
    38   {
    39     static uint32_t networkID = 0;
    40     this->networkID_ = networkID++;
     39        this->name_ = name;
     40        NetworkFunctionManager::getNameMap()[name] = this;
     41        NetworkFunctionManager::getFunctorMap()[p] = this;
     42        NetworkFunctionManager::getIdMap()[this->getNetworkID()] = this;
     43    }
    4144
    42     this->name_ = name;
    43     NetworkFunctionManager::getNameMap()[name] = this;
    44   }
    45   NetworkFunctionBase::~NetworkFunctionBase()
    46   {
    47   }
    48 
    49 
    50   NetworkFunctionStatic::NetworkFunctionStatic(const FunctorStaticPtr& functor, const std::string& name, const NetworkFunctionPointer& p):
    51     NetworkFunctionBase(name)
    52   {
    53     this->functor_ = functor;
    54     NetworkFunctionStatic::getFunctorMap()[p] = this;
    55     NetworkFunctionStatic::getIdMap()[ this->getNetworkID() ] = this;
    56   }
    57 
    58   /*static*/ std::map<NetworkFunctionPointer, NetworkFunctionStatic*>& NetworkFunctionStatic::getFunctorMap()
    59   {
    60     static std::map<NetworkFunctionPointer, NetworkFunctionStatic*> functorMap_;
    61     return functorMap_;
    62   }
    63 
    64   /*static*/ std::map<uint32_t, NetworkFunctionStatic*>& NetworkFunctionStatic::getIdMap()
    65   {
    66     static std::map<uint32_t, NetworkFunctionStatic*> idMap_;
    67     return idMap_;
    68   }
    69 
    70 
    71   NetworkMemberFunctionBase::NetworkMemberFunctionBase(const std::string& name, const NetworkFunctionPointer& p):
    72     NetworkFunctionBase(name)
    73   {
    74     this->functorMap_[p] = this;
    75     this->idMap_[ this->getNetworkID() ] = this;
    76   }
    77 
    78   NetworkMemberFunctionBase::~NetworkMemberFunctionBase()
    79   {
    80   }
    81 
    82 
     45    void NetworkFunctionBase::setNetworkID(uint32_t id)
     46    {
     47        NetworkFunctionManager::getIdMap().erase(this->networkID_);  // remove old id
     48        this->networkID_ = id;
     49        NetworkFunctionManager::getIdMap()[this->networkID_] = this; // add new id
     50    }
    8351}
Note: See TracChangeset for help on using the changeset viewer.