Changeset 1460 for XIOS/dev/branch_openmp/src/node/variable.cpp
- Timestamp:
- 03/22/18 10:43:20 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_openmp/src/node/variable.cpp
r1075 r1460 97 97 { 98 98 CContext* context=CContext::getCurrent() ; 99 if (!context->hasServer) 99 100 if (context->hasClient) 100 101 { 101 CContextClient* client=context->client ;102 103 CEventClient event(this->getType(),EVENT_ID_VARIABLE_VALUE);104 if (client->isServerLeader())102 // Use correct context client to send message 103 // int nbSrvPools = (context->hasServer) ? context->clientPrimServer.size() : 1; 104 int nbSrvPools = (context->hasServer) ? (context->hasClient ? context->clientPrimServer.size() : 0) : 1; 105 for (int i = 0; i < nbSrvPools; ++i) 105 106 { 106 CMessage msg ; 107 msg<<this->getId() ; 108 msg<<content ; 109 const std::list<int>& ranks = client->getRanksServerLeader(); 110 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 111 event.push(*itRank,1,msg); 112 client->sendEvent(event) ; 113 } 114 else client->sendEvent(event) ; 115 } 107 // CContextClient* contextClientTmp = (0 != context->clientPrimServer) ? context->clientPrimServer 108 CContextClient* contextClientTmp = (context->hasServer) ? context->clientPrimServer[i] 109 : context->client; 110 111 CEventClient event(this->getType(),EVENT_ID_VARIABLE_VALUE) ; 112 if (contextClientTmp->isServerLeader()) 113 { 114 CMessage msg ; 115 msg<<this->getId() ; 116 msg<<content ; 117 const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 118 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 119 event.push(*itRank,1,msg); 120 contextClientTmp->sendEvent(event) ; 121 } 122 else contextClientTmp->sendEvent(event) ; 123 } 124 } 125 } 126 127 void CVariable::sendValue(CContextClient* client, bool clientPrim /*= false*/) 128 { 129 CEventClient event(this->getType(),EVENT_ID_VARIABLE_VALUE) ; 130 if (client->isServerLeader()) 131 { 132 CMessage msg ; 133 msg<<this->getId() ; 134 msg<<content ; 135 const std::list<int>& ranks = client->getRanksServerLeader(); 136 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 137 event.push(*itRank,1,msg); 138 client->sendEvent(event) ; 139 } 140 else client->sendEvent(event) ; 116 141 } 117 142
Note: See TracChangeset
for help on using the changeset viewer.