Changeset 731 for XIOS/trunk/src/node/context.cpp
- Timestamp:
- 10/13/15 15:14:23 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/node/context.cpp
r730 r731 266 266 void CContext::setClientServerBuffer() 267 267 { 268 size_t bufferSizeMin= CXios::minBufferSize;268 size_t minBufferSize = CXios::minBufferSize; 269 269 #define DECLARE_NODE(Name_, name_) \ 270 if ( bufferSizeMin < sizeof(C##Name_##Definition)) bufferSizeMin= sizeof(C##Name_##Definition);270 if (minBufferSize < sizeof(C##Name_##Definition)) minBufferSize = sizeof(C##Name_##Definition); 271 271 #define DECLARE_NODE_PAR(Name_, name_) 272 272 #include "node_type.conf" … … 274 274 #undef DECLARE_NODE_PAR 275 275 276 std::map<int, StdSize> bufferSize = getDataSize(); 277 std::map<int, StdSize>::iterator it = bufferSize.begin(), 278 ite = bufferSize.end(); 279 for (; it != ite; ++it) 280 if (it->second < bufferSizeMin) it->second = bufferSizeMin; 276 std::map<int, StdSize> bufferSize = getAttributesBufferSize(); 277 std::map<int, StdSize>::iterator it, ite = bufferSize.end(); 278 for (it = bufferSize.begin(); it != ite; ++it) 279 if (it->second < minBufferSize) it->second = minBufferSize; 280 281 std::map<int, StdSize> dataBufferSize = getDataBufferSize(); 282 ite = dataBufferSize.end(); 283 for (it = dataBufferSize.begin(); it != ite; ++it) 284 if (it->second > bufferSize[it->first]) bufferSize[it->first] = it->second; 281 285 282 286 if (client->isServerLeader()) … … 284 288 const std::list<int>& ranks = client->getRanksServerLeader(); 285 289 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 286 if (!bufferSize.count(*itRank)) bufferSize[*itRank] = bufferSizeMin;290 if (!bufferSize.count(*itRank)) bufferSize[*itRank] = minBufferSize; 287 291 } 288 292 … … 791 795 } 792 796 793 std::map<int, StdSize>& CContext::getDataSize() 797 std::map<int, StdSize>& CContext::getAttributesBufferSize() 798 { 799 std::map<int, StdSize> attributesSize; 800 801 size_t numEnabledFiles = this->enabledFiles.size(); 802 for (size_t i = 0; i < numEnabledFiles; ++i) 803 { 804 CFile* file = this->enabledFiles[i]; 805 806 std::vector<CField*> enabledFields = file->getEnabledFields(); 807 size_t numEnabledFields = enabledFields.size(); 808 for (size_t j = 0; j < numEnabledFields; ++j) 809 { 810 const std::map<int, StdSize> mapSize = enabledFields[j]->getGridAttributesBufferSize(); 811 std::map<int, StdSize>::const_iterator it = mapSize.begin(), itE = mapSize.end(); 812 for (; it != itE; ++it) 813 { 814 // If attributesSize[it->first] does not exist, it will be zero-initialized 815 // so we can use it safely without checking for its existance 816 if (attributesSize[it->first] < it->second) 817 attributesSize[it->first] = it->second; 818 } 819 } 820 } 821 822 return attributesSize; 823 } 824 825 std::map<int, StdSize>& CContext::getDataBufferSize() 794 826 { 795 827 CFile::mode_attr::t_enum mode = hasClient ? CFile::mode_attr::write : CFile::mode_attr::read; … … 810 842 for (size_t j = 0; j < numEnabledFields; ++j) 811 843 { 812 const std::map<int, StdSize> mapSize = enabledFields[j]->getGridData Size();844 const std::map<int, StdSize> mapSize = enabledFields[j]->getGridDataBufferSize(); 813 845 std::map<int, StdSize>::const_iterator it = mapSize.begin(), itE = mapSize.end(); 814 846 for (; it != itE; ++it)
Note: See TracChangeset
for help on using the changeset viewer.