Ignore:
Timestamp:
12/05/16 17:47:54 (7 years ago)
Author:
oabramkina
Message:

First working version with compression by secondary servers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_olga/src/group_template_impl.hpp

    r987 r1009  
    379379    { 
    380380      // Use correct context client to send message 
    381        CContextClient* contextClientTmp = (0 != context->clientPrimServer) ? context->clientPrimServer : context->client; 
    382  
    383        CEventClient event(this->getType(),EVENT_ID_CREATE_CHILD) ;    
    384        if (contextClientTmp->isServerLeader()) 
    385        { 
    386          CMessage msg ; 
    387          msg<<this->getId() ; 
    388          msg<<id ; 
    389          const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 
    390          for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
    391            event.push(*itRank,1,msg) ; 
    392          contextClientTmp->sendEvent(event) ; 
    393        } 
    394        else contextClientTmp->sendEvent(event) ; 
     381//      CContextClient* contextClientTmp = (0 != context->clientPrimServer) ? context->clientPrimServer : context->client; 
     382      int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 
     383      for (int i = 0; i < nbSrvPools; ++i) 
     384      { 
     385         CContextClient* contextClientTmp = (context->hasServer) ? context->clientPrimServer[i] : context->client; 
     386 
     387         CEventClient event(this->getType(),EVENT_ID_CREATE_CHILD) ; 
     388         if (contextClientTmp->isServerLeader()) 
     389         { 
     390           CMessage msg ; 
     391           msg<<this->getId() ; 
     392           msg<<id ; 
     393           const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 
     394           for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     395             event.push(*itRank,1,msg) ; 
     396           contextClientTmp->sendEvent(event) ; 
     397         } 
     398         else contextClientTmp->sendEvent(event) ; 
     399      } 
    395400    } 
    396401 
     
    416421    
    417422   template <class U, class V, class W> 
     423   void CGroupTemplate<U, V, W>::sendCreateChild(const string& id, const int srvPool) 
     424   { 
     425    CContext* context=CContext::getCurrent() ; 
     426    CContextClient* contextClientTmp = context->clientPrimServer[srvPool]; 
     427 
     428    CEventClient event(this->getType(),EVENT_ID_CREATE_CHILD) ; 
     429    if (contextClientTmp->isServerLeader()) 
     430    { 
     431      CMessage msg ; 
     432      msg<<this->getId() ; 
     433      msg<<id ; 
     434      const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 
     435      for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     436       event.push(*itRank,1,msg) ; 
     437      contextClientTmp->sendEvent(event) ; 
     438    } 
     439    else contextClientTmp->sendEvent(event) ; 
     440   } 
     441 
     442   template <class U, class V, class W> 
    418443   void CGroupTemplate<U, V, W>::sendCreateChildGroup(const string& id) 
    419444   { 
     
    424449    { 
    425450        // Use correct context client to send message 
    426        CContextClient* contextClientTmp = (0 != context->clientPrimServer) ? context->clientPrimServer : context->client; 
    427  
    428        CEventClient event(this->getType(),EVENT_ID_CREATE_CHILD_GROUP) ;    
    429        if (contextClientTmp->isServerLeader()) 
    430        { 
    431          CMessage msg ; 
    432          msg<<this->getId() ; 
    433          msg<<id ; 
    434          const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 
    435          for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
    436            event.push(*itRank,1,msg) ; 
    437          contextClientTmp->sendEvent(event) ; 
    438        } 
    439        else contextClientTmp->sendEvent(event) ; 
     451//      CContextClient* contextClientTmp = (0 != context->clientPrimServer) ? context->clientPrimServer : context->client; 
     452      int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 
     453      for (int i = 0; i < nbSrvPools; ++i) 
     454      { 
     455        CContextClient* contextClientTmp = (context->hasServer) ? context->clientPrimServer[i] : context->client; 
     456        CEventClient event(this->getType(),EVENT_ID_CREATE_CHILD_GROUP) ; 
     457        if (contextClientTmp->isServerLeader()) 
     458        { 
     459          CMessage msg ; 
     460          msg<<this->getId() ; 
     461          msg<<id ; 
     462          const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 
     463          for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     464            event.push(*itRank,1,msg) ; 
     465          contextClientTmp->sendEvent(event) ; 
     466        } 
     467        else contextClientTmp->sendEvent(event) ; 
     468      } 
    440469    } 
    441470 
Note: See TracChangeset for help on using the changeset viewer.