Ignore:
Timestamp:
05/26/15 16:13:46 (9 years ago)
Author:
rlacroix
Message:

Allow using more servers than clients.

This will be useful later when implementing server to client communications.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/node/context.cpp

    r593 r595  
    241241     if (hasClient) 
    242242     { 
    243        size_t bufferSizeMin = 10*sizeof(size_t)*1024; 
     243       size_t bufferSizeMin = 10 * sizeof(size_t) * 1024; 
    244244#define DECLARE_NODE(Name_, name_)    \ 
    245    bufferSizeMin = (bufferSizeMin < sizeof(C##Name_##Definition)) ?  sizeof(C##Name_##Definition) : bufferSizeMin; 
     245       bufferSizeMin = (bufferSizeMin < sizeof(C##Name_##Definition)) ?  sizeof(C##Name_##Definition) : bufferSizeMin; 
    246246#define DECLARE_NODE_PAR(Name_, name_) 
    247247#include "node_type.conf" 
     
    251251         if (client->isServerLeader()) 
    252252         { 
    253            bufferSize[client->getServerLeader()] = bufferSizeMin; 
     253           const std::list<int>& ranks = client->getRanksServerLeader(); 
     254           for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     255             bufferSize[*itRank] = bufferSizeMin; 
    254256         } 
    255257         else 
    256258          return; 
    257259       } 
    258  
    259        std::map<int, StdSize>::iterator  it = bufferSize.begin(), 
    260                                         ite = bufferSize.end(); 
    261        for (; it != ite; ++it) 
    262        it->second = (it->second < bufferSizeMin) ? bufferSizeMin : it->second; 
     260       else 
     261       { 
     262         std::map<int, StdSize>::iterator it  = bufferSize.begin(), 
     263                                          ite = bufferSize.end(); 
     264         for (; it != ite; ++it) 
     265           it->second = (it->second < bufferSizeMin) ? bufferSizeMin : it->second; 
     266       } 
     267 
    263268       client->setBufferSize(bufferSize); 
    264269     } 
     
    513518       CMessage msg; 
    514519       msg<<this->getIdServer(); 
    515        event.push(client->getServerLeader(),1,msg); 
     520       const std::list<int>& ranks = client->getRanksServerLeader(); 
     521       for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     522         event.push(*itRank,1,msg); 
    516523       client->sendEvent(event); 
    517524     } 
     
    539546         CMessage msg; 
    540547         msg<<this->getIdServer()<<step; 
    541          event.push(client->getServerLeader(),1,msg); 
     548         const std::list<int>& ranks = client->getRanksServerLeader(); 
     549         for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     550           event.push(*itRank,1,msg); 
    542551         client->sendEvent(event); 
    543552       } 
     
    549558   void CContext::recvUpdateCalendar(CEventServer& event) 
    550559   { 
    551  
    552560      CBufferIn* buffer=event.subEvents.begin()->buffer; 
    553561      string id; 
     
    572580       CMessage msg; 
    573581       msg<<this->getIdServer(); 
    574        event.push(client->getServerLeader(),1,msg); 
     582       const std::list<int>& ranks = client->getRanksServerLeader(); 
     583       for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     584         event.push(*itRank,1,msg) ; 
    575585       client->sendEvent(event); 
    576586     } 
     
    603613         CMessage msg; 
    604614         msg<<this->getIdServer(); 
    605          event.push(client->getServerLeader(),1,msg); 
     615         const std::list<int>& ranks = client->getRanksServerLeader(); 
     616         for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     617           event.push(*itRank,1,msg); 
    606618         client->sendEvent(event); 
    607619       } 
Note: See TracChangeset for help on using the changeset viewer.