Changeset 987
- Timestamp:
- 11/10/16 13:29:57 (7 years ago)
- Location:
- XIOS/dev/dev_olga
- Files:
-
- 2 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_olga/inputs/iodef.xml
r983 r987 6 6 7 7 8 <field_definition level="1" enabled=". FALSE.">8 <field_definition level="1" enabled=".TRUE."> 9 9 <field id="field_A" operation="average" freq_op="3600s" grid_ref="grid_A"/> 10 10 <field id="field_A_zoom" operation="average" freq_op="3600s" field_ref="field_A" grid_ref="grid_A_zoom"/> … … 12 12 13 13 14 <file_definition type=" multiple_file" par_access="collective" output_freq="6h" output_level="10" enabled=".TRUE.">14 <file_definition type="one_file" par_access="collective" output_freq="1h" output_level="10" enabled=".TRUE."> 15 15 <file id="output" name="output"> 16 16 <field field_ref="field_A" name="field_A" /> -
XIOS/dev/dev_olga/src/group_template_impl.hpp
r595 r987 373 373 void CGroupTemplate<U, V, W>::sendCreateChild(const string& id) 374 374 { 375 CContext* context=CContext::getCurrent() ; 376 377 if (! context->hasServer ) 375 CContext* context=CContext::getCurrent() ; 376 377 if (context->hasClient) 378 // if (!context->hasServer ) 378 379 { 379 CContextClient* client=context->client ; 380 // Use correct context client to send message 381 CContextClient* contextClientTmp = (0 != context->clientPrimServer) ? context->clientPrimServer : context->client; 380 382 381 383 CEventClient event(this->getType(),EVENT_ID_CREATE_CHILD) ; 382 if (c lient->isServerLeader())384 if (contextClientTmp->isServerLeader()) 383 385 { 384 386 CMessage msg ; 385 387 msg<<this->getId() ; 386 388 msg<<id ; 387 const std::list<int>& ranks = c lient->getRanksServerLeader();389 const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 388 390 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 389 391 event.push(*itRank,1,msg) ; 390 c lient->sendEvent(event) ;392 contextClientTmp->sendEvent(event) ; 391 393 } 392 else c lient->sendEvent(event) ;394 else contextClientTmp->sendEvent(event) ; 393 395 } 396 397 // if (! context->hasServer ) 398 // { 399 // CContextClient* client=context->client ; 400 401 // CEventClient event(this->getType(),EVENT_ID_CREATE_CHILD) ; 402 // if (client->isServerLeader()) 403 // { 404 // CMessage msg ; 405 // msg<<this->getId() ; 406 // msg<<id ; 407 // const std::list<int>& ranks = client->getRanksServerLeader(); 408 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 409 // event.push(*itRank,1,msg) ; 410 // client->sendEvent(event) ; 411 // } 412 // else client->sendEvent(event) ; 413 // } 394 414 395 415 } … … 399 419 { 400 420 CContext* context=CContext::getCurrent() ; 401 if (! context->hasServer ) 421 422 // if (! context->hasServer ) 423 if (context->hasClient) 402 424 { 403 CContextClient* client=context->client ; 425 // Use correct context client to send message 426 CContextClient* contextClientTmp = (0 != context->clientPrimServer) ? context->clientPrimServer : context->client; 404 427 405 428 CEventClient event(this->getType(),EVENT_ID_CREATE_CHILD_GROUP) ; 406 if (c lient->isServerLeader())429 if (contextClientTmp->isServerLeader()) 407 430 { 408 431 CMessage msg ; 409 432 msg<<this->getId() ; 410 433 msg<<id ; 411 const std::list<int>& ranks = c lient->getRanksServerLeader();434 const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 412 435 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 413 436 event.push(*itRank,1,msg) ; 414 c lient->sendEvent(event) ;437 contextClientTmp->sendEvent(event) ; 415 438 } 416 else c lient->sendEvent(event) ;439 else contextClientTmp->sendEvent(event) ; 417 440 } 441 442 // if (! context->hasServer ) 443 // { 444 // CContextClient* client=context->client ; 445 446 // CEventClient event(this->getType(),EVENT_ID_CREATE_CHILD_GROUP) ; 447 // if (client->isServerLeader()) 448 // { 449 // CMessage msg ; 450 // msg<<this->getId() ; 451 // msg<<id ; 452 // const std::list<int>& ranks = client->getRanksServerLeader(); 453 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 454 // event.push(*itRank,1,msg) ; 455 // client->sendEvent(event) ; 456 // } 457 // else client->sendEvent(event) ; 458 // } 418 459 419 460 } -
XIOS/dev/dev_olga/src/node/axis.cpp
r970 r987 845 845 } 846 846 847 // void CAxis::sendServerAttribut(const std::vector<int>& globalDim, int orderPositionInGrid, 848 // CServerDistributionDescription::ServerDistributionType distType) 849 // { 850 // CContext* context = CContext::getCurrent(); 851 // CContextClient* client = context->client; 852 // int nbServer = client->serverSize; 853 854 // CServerDistributionDescription serverDescription(globalDim, nbServer); 855 // serverDescription.computeServerDistribution(); 856 857 // std::vector<std::vector<int> > serverIndexBegin = serverDescription.getServerIndexBegin(); 858 // std::vector<std::vector<int> > serverDimensionSizes = serverDescription.getServerDimensionSizes(); 859 860 // CEventClient event(getType(),EVENT_ID_SERVER_ATTRIBUT); 861 // if (client->isServerLeader()) 862 // { 863 // std::list<CMessage> msgs; 864 865 // const std::list<int>& ranks = client->getRanksServerLeader(); 866 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 867 // { 868 // // Use const int to ensure CMessage holds a copy of the value instead of just a reference 869 // const int begin = serverIndexBegin[*itRank][orderPositionInGrid]; 870 // const int ni = serverDimensionSizes[*itRank][orderPositionInGrid]; 871 // const int end = begin + ni - 1; 872 873 // msgs.push_back(CMessage()); 874 // CMessage& msg = msgs.back(); 875 // msg << this->getId(); 876 // msg << ni << begin << end; 877 // msg << global_zoom_begin.getValue() << global_zoom_n.getValue(); 878 // msg << isCompressible_; 879 880 // event.push(*itRank,1,msg); 881 // } 882 // client->sendEvent(event); 883 // } 884 // else client->sendEvent(event); 885 // } 886 847 887 void CAxis::sendServerAttribut(const std::vector<int>& globalDim, int orderPositionInGrid, 848 888 CServerDistributionDescription::ServerDistributionType distType) 849 889 { 850 890 CContext* context = CContext::getCurrent(); 851 CContextClient* client = context->client; 852 int nbServer = client->serverSize; 891 892 CContextClient* contextClientTmp = (0 != context->clientPrimServer) ? context->clientPrimServer 893 : context->client; 894 895 896 int nbServer = contextClientTmp->serverSize; 853 897 854 898 CServerDistributionDescription serverDescription(globalDim, nbServer); … … 858 902 std::vector<std::vector<int> > serverDimensionSizes = serverDescription.getServerDimensionSizes(); 859 903 904 globalDimGrid.resize(globalDim.size()); 905 for (int idx = 0; idx < globalDim.size(); ++idx) globalDimGrid(idx) = globalDim[idx]; 906 860 907 CEventClient event(getType(),EVENT_ID_SERVER_ATTRIBUT); 861 if (c lient->isServerLeader())908 if (contextClientTmp->isServerLeader()) 862 909 { 863 910 std::list<CMessage> msgs; 864 911 865 const std::list<int>& ranks = c lient->getRanksServerLeader();912 const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 866 913 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 867 914 { … … 877 924 msg << global_zoom_begin.getValue() << global_zoom_n.getValue(); 878 925 msg << isCompressible_; 926 msg << orderPositionInGrid; 927 msg << globalDimGrid; 879 928 880 929 event.push(*itRank,1,msg); 881 930 } 882 c lient->sendEvent(event);883 } 884 else c lient->sendEvent(event);931 contextClientTmp->sendEvent(event); 932 } 933 else contextClientTmp->sendEvent(event); 885 934 } 886 935 … … 891 940 *buffer >> axisId; 892 941 get(axisId)->recvServerAttribut(*buffer); 942 943 CContext* context = CContext::getCurrent(); 944 if (context->hasClient && context->hasServer) 945 { 946 std::vector<int> globalDim(get(axisId)->globalDimGrid.numElements()); 947 for (int idx = 0; idx < globalDim.size(); ++idx) globalDim[idx] = get(axisId)->globalDimGrid(idx); 948 get(axisId)->sendServerAttribut(globalDim, get(axisId)->orderPosInGrid, 949 CServerDistributionDescription::BAND_DISTRIBUTION); 950 } 893 951 } 894 952 … … 900 958 buffer >> global_zoom_begin_tmp >> global_zoom_n_tmp; 901 959 buffer >> isCompressible_; 960 buffer >> orderPosInGrid; 961 buffer >> globalDimGrid; 962 902 963 global_zoom_begin = global_zoom_begin_tmp; 903 964 global_zoom_n = global_zoom_n_tmp; -
XIOS/dev/dev_olga/src/node/axis.hpp
r927 r987 38 38 , public CAxisAttributes 39 39 { 40 /// typedef /// 41 typedef CObjectTemplate<CAxis> SuperClass; 42 typedef CAxisAttributes SuperClassAttribute; 43 44 public : 40 45 enum EEventId 41 46 { … … 46 51 } ; 47 52 48 /// typedef /// 49 typedef CObjectTemplate<CAxis> SuperClass; 50 typedef CAxisAttributes SuperClassAttribute; 53 51 54 52 55 public : … … 124 127 CArray<double,2> bound_srv; 125 128 bool hasValue; 129 CArray<int,1> globalDimGrid; 130 int orderPosInGrid; 126 131 127 132 private: -
XIOS/dev/dev_olga/src/node/context.cpp
r983 r987 521 521 } 522 522 523 // We have a xml tree on the server side and now, it should be also processed 524 // if (hasClient && !hasServer) sendPostProcessing(); 525 523 526 // // Now tell server that it can process all messages from client 524 527 // // if (hasClient && !hasServer) this->sendCloseDefinition(); 525 528 if (hasClient) this->sendCloseDefinition(); 526 527 // We have a xml tree on the server side and now, it should be also processed528 // if (hasClient && !hasServer) sendPostProcessing();529 529 530 530 // There are some processings that should be done after all of above. For example: check mask or index … … 536 536 this->solveAllRefOfEnabledFields(true); 537 537 } 538 539 538 540 539 541 // // Now tell server that it can process all messages from client … … 763 765 void CContext::sendCloseDefinition(void) 764 766 { 767 // Use correct context client to send message 768 CContextClient* contextClientTmp = (0 != clientPrimServer) ? clientPrimServer : client; 765 769 CEventClient event(getType(),EVENT_ID_CLOSE_DEFINITION); 766 if (!hasServer) 767 { 768 if (client->isServerLeader()) 769 { 770 CMessage msg; 771 msg<<this->getIdServer(); 772 const std::list<int>& ranks = client->getRanksServerLeader(); 773 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 774 event.push(*itRank,1,msg); 775 client->sendEvent(event); 776 } 777 else client->sendEvent(event); 778 } 779 else 780 { 781 if (clientPrimServer->isServerLeader()) 782 { 783 CMessage msg; 784 msg<<this->getIdServer(); 785 const std::list<int>& ranks = clientPrimServer->getRanksServerLeader(); 786 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 787 event.push(*itRank,1,msg); 788 clientPrimServer->sendEvent(event); 789 } 790 else clientPrimServer->sendEvent(event); 791 792 } 770 771 if (contextClientTmp->isServerLeader()) 772 { 773 CMessage msg; 774 msg<<this->getIdServer(); 775 const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 776 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 777 event.push(*itRank,1,msg); 778 contextClientTmp->sendEvent(event); 779 } 780 else contextClientTmp->sendEvent(event); 781 782 // if (!hasServer) 783 // { 784 // if (client->isServerLeader()) 785 // { 786 // CMessage msg; 787 // msg<<this->getIdServer(); 788 // const std::list<int>& ranks = client->getRanksServerLeader(); 789 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 790 // event.push(*itRank,1,msg); 791 // client->sendEvent(event); 792 // } 793 // else client->sendEvent(event); 794 // } 795 // else 796 // { 797 // if (clientPrimServer->isServerLeader()) 798 // { 799 // CMessage msg; 800 // msg<<this->getIdServer(); 801 // const std::list<int>& ranks = clientPrimServer->getRanksServerLeader(); 802 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 803 // event.push(*itRank,1,msg); 804 // clientPrimServer->sendEvent(event); 805 // } 806 // else clientPrimServer->sendEvent(event); 807 808 // } 793 809 } 794 810 … … 796 812 void CContext::recvCloseDefinition(CEventServer& event) 797 813 { 798 799 814 CBufferIn* buffer=event.subEvents.begin()->buffer; 800 815 string id; 801 816 *buffer>>id; 802 817 get(id)->closeDefinition(); 818 if (get(id)->hasClient && get(id)->hasServer) 819 { 820 get(id)->sendCloseDefinition(); 821 } 803 822 } 804 823 … … 806 825 void CContext::sendUpdateCalendar(int step) 807 826 { 827 // Use correct context client to send message 828 CContextClient* contextClientTmp = (0 != clientPrimServer) ? clientPrimServer : client; 808 829 CEventClient event(getType(),EVENT_ID_UPDATE_CALENDAR); 809 if (!hasServer) 810 { 811 if (client->isServerLeader()) 830 831 if (contextClientTmp->isServerLeader()) 812 832 { 813 833 CMessage msg; 814 834 msg<<this->getIdServer()<<step; 815 const std::list<int>& ranks = c lient->getRanksServerLeader();835 const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 816 836 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 817 837 event.push(*itRank,1,msg); 818 c lient->sendEvent(event);838 contextClientTmp->sendEvent(event); 819 839 } 820 else client->sendEvent(event); 821 } 822 else 823 { 824 if (clientPrimServer->isServerLeader()) 825 { 826 CMessage msg; 827 msg<<this->getIdServer()<<step; 828 const std::list<int>& ranks = clientPrimServer->getRanksServerLeader(); 829 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 830 event.push(*itRank,1,msg); 831 clientPrimServer->sendEvent(event); 832 } 833 else clientPrimServer->sendEvent(event); 834 } 840 else contextClientTmp->sendEvent(event); 841 842 // if (!hasServer) 843 // { 844 // if (client->isServerLeader()) 845 // { 846 // CMessage msg; 847 // msg<<this->getIdServer()<<step; 848 // const std::list<int>& ranks = client->getRanksServerLeader(); 849 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 850 // event.push(*itRank,1,msg); 851 // client->sendEvent(event); 852 // } 853 // else client->sendEvent(event); 854 // } 855 // else 856 // { 857 // if (clientPrimServer->isServerLeader()) 858 // { 859 // CMessage msg; 860 // msg<<this->getIdServer()<<step; 861 // const std::list<int>& ranks = clientPrimServer->getRanksServerLeader(); 862 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 863 // event.push(*itRank,1,msg); 864 // clientPrimServer->sendEvent(event); 865 // } 866 // else clientPrimServer->sendEvent(event); 867 // } 835 868 } 836 869 … … 850 883 buffer>>step; 851 884 updateCalendar(step); 885 if (hasClient && hasServer) 886 { 887 sendUpdateCalendar(step); 888 } 852 889 } 853 890 … … 855 892 void CContext::sendCreateFileHeader(void) 856 893 { 894 // Use correct context client to send message 895 CContextClient* contextClientTmp = (0 != clientPrimServer) ? clientPrimServer : client; 857 896 CEventClient event(getType(),EVENT_ID_CREATE_FILE_HEADER); 858 897 859 if (!hasServer) 860 { 861 if (client->isServerLeader()) 862 { 863 CMessage msg; 864 msg<<this->getIdServer(); 865 const std::list<int>& ranks = client->getRanksServerLeader(); 866 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 867 event.push(*itRank,1,msg) ; 868 client->sendEvent(event); 869 } 870 else client->sendEvent(event); 871 } 872 else 873 { 874 if (clientPrimServer->isServerLeader()) 875 { 876 CMessage msg; 877 msg<<this->getIdServer(); 878 const std::list<int>& ranks = clientPrimServer->getRanksServerLeader(); 879 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 880 event.push(*itRank,1,msg) ; 881 clientPrimServer->sendEvent(event); 882 } 883 else clientPrimServer->sendEvent(event); 884 } 898 if (contextClientTmp->isServerLeader()) 899 { 900 CMessage msg; 901 msg<<this->getIdServer(); 902 const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 903 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 904 event.push(*itRank,1,msg) ; 905 contextClientTmp->sendEvent(event); 906 } 907 else contextClientTmp->sendEvent(event); 908 909 // if (!hasServer) 910 // { 911 // if (client->isServerLeader()) 912 // { 913 // CMessage msg; 914 // msg<<this->getIdServer(); 915 // const std::list<int>& ranks = client->getRanksServerLeader(); 916 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 917 // event.push(*itRank,1,msg) ; 918 // client->sendEvent(event); 919 // } 920 // else client->sendEvent(event); 921 // } 922 // else 923 // { 924 // if (clientPrimServer->isServerLeader()) 925 // { 926 // CMessage msg; 927 // msg<<this->getIdServer(); 928 // const std::list<int>& ranks = clientPrimServer->getRanksServerLeader(); 929 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 930 // event.push(*itRank,1,msg) ; 931 // clientPrimServer->sendEvent(event); 932 // } 933 // else clientPrimServer->sendEvent(event); 934 // } 885 935 } 886 936 … … 897 947 void CContext::recvCreateFileHeader(CBufferIn& buffer) 898 948 { 899 createFileHeader(); 949 // The creation of header file should be delegated to server2, for now 950 if (hasClient && hasServer) 951 { 952 sendCreateFileHeader(); 953 } 954 955 if (!hasClient && hasServer) 956 createFileHeader(); 900 957 } 901 958 … … 903 960 void CContext::sendPostProcessing() 904 961 { 905 if (hasClient) 906 { 907 if (!hasServer) 908 { 909 CEventClient event(getType(),EVENT_ID_POST_PROCESS); 910 if (client->isServerLeader()) 911 { 912 CMessage msg; 913 msg<<this->getIdServer(); 914 const std::list<int>& ranks = client->getRanksServerLeader(); 915 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 916 event.push(*itRank,1,msg); 917 client->sendEvent(event); 918 } 919 else client->sendEvent(event); 920 } 921 else 922 { 923 CEventClient event(getType(),EVENT_ID_POST_PROCESS); 924 if (clientPrimServer->isServerLeader()) 925 { 926 CMessage msg; 927 msg<<this->getIdServer(); 928 const std::list<int>& ranks = clientPrimServer->getRanksServerLeader(); 929 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 930 event.push(*itRank,1,msg); 931 clientPrimServer->sendEvent(event); 932 } 933 else clientPrimServer->sendEvent(event); 934 } 935 } 962 // Use correct context client to send message 963 CContextClient* contextClientTmp = (0 != clientPrimServer) ? clientPrimServer : client; 964 CEventClient event(getType(),EVENT_ID_POST_PROCESS); 965 966 if (contextClientTmp->isServerLeader()) 967 { 968 CMessage msg; 969 msg<<this->getIdServer(); 970 const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 971 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 972 event.push(*itRank,1,msg); 973 contextClientTmp->sendEvent(event); 974 } 975 else contextClientTmp->sendEvent(event); 976 977 // if (hasClient) 978 // { 979 // if (!hasServer) 980 // { 981 // CEventClient event(getType(),EVENT_ID_POST_PROCESS); 982 // if (client->isServerLeader()) 983 // { 984 // CMessage msg; 985 // msg<<this->getIdServer(); 986 // const std::list<int>& ranks = client->getRanksServerLeader(); 987 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 988 // event.push(*itRank,1,msg); 989 // client->sendEvent(event); 990 // } 991 // else client->sendEvent(event); 992 // } 993 // else 994 // { 995 // CEventClient event(getType(),EVENT_ID_POST_PROCESS); 996 // if (clientPrimServer->isServerLeader()) 997 // { 998 // CMessage msg; 999 // msg<<this->getIdServer(); 1000 // const std::list<int>& ranks = clientPrimServer->getRanksServerLeader(); 1001 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1002 // event.push(*itRank,1,msg); 1003 // clientPrimServer->sendEvent(event); 1004 // } 1005 // else clientPrimServer->sendEvent(event); 1006 // } 1007 // } 936 1008 } 937 1009 … … 1388 1460 1389 1461 void CContext::sendRegistry(void) 1390 { 1462 { 1391 1463 registryOut->hierarchicalGatherRegistry() ; 1392 1464 1465 // Use correct context client to send message 1466 CContextClient* contextClientTmp = (0 != clientPrimServer) ? clientPrimServer : client; 1393 1467 CEventClient event(CContext::GetType(), CContext::EVENT_ID_SEND_REGISTRY); 1394 if (!hasServer) 1395 { 1396 if (client->isServerLeader()) 1468 if (contextClientTmp->isServerLeader()) 1397 1469 { 1398 1470 CMessage msg ; 1399 1471 msg<<this->getIdServer(); 1400 if (c lient->clientRank==0) msg<<*registryOut ;1472 if (contextClientTmp->clientRank==0) msg<<*registryOut ; 1401 1473 const std::list<int>& ranks = client->getRanksServerLeader(); 1402 1474 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1403 1475 event.push(*itRank,1,msg); 1404 c lient->sendEvent(event);1476 contextClientTmp->sendEvent(event); 1405 1477 } 1406 else client->sendEvent(event); 1407 } 1408 else 1409 { 1410 if (clientPrimServer->isServerLeader()) 1411 { 1412 CMessage msg ; 1413 msg<<this->getIdServer(); 1414 if (clientPrimServer->clientRank==0) msg<<*registryOut ; 1415 const std::list<int>& ranks = clientPrimServer->getRanksServerLeader(); 1416 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1417 event.push(*itRank,1,msg); 1418 clientPrimServer->sendEvent(event); 1419 } 1420 else clientPrimServer->sendEvent(event); 1421 1422 } 1478 else contextClientTmp->sendEvent(event); 1479 1480 // if (!hasServer) 1481 // { 1482 // if (client->isServerLeader()) 1483 // { 1484 // CMessage msg ; 1485 // msg<<this->getIdServer(); 1486 // if (client->clientRank==0) msg<<*registryOut ; 1487 // const std::list<int>& ranks = client->getRanksServerLeader(); 1488 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1489 // event.push(*itRank,1,msg); 1490 // client->sendEvent(event); 1491 // } 1492 // else client->sendEvent(event); 1493 // } 1494 // else 1495 // { 1496 // if (clientPrimServer->isServerLeader()) 1497 // { 1498 // CMessage msg ; 1499 // msg<<this->getIdServer(); 1500 // if (clientPrimServer->clientRank==0) msg<<*registryOut ; 1501 // const std::list<int>& ranks = clientPrimServer->getRanksServerLeader(); 1502 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1503 // event.push(*itRank,1,msg); 1504 // clientPrimServer->sendEvent(event); 1505 // } 1506 // else clientPrimServer->sendEvent(event); 1507 // } 1423 1508 } 1424 1509 -
XIOS/dev/dev_olga/src/node/domain.cpp
r975 r987 1395 1395 { 1396 1396 CContext* context = CContext::getCurrent(); 1397 CContextClient* client = context->client; 1398 int nbServer = client->serverSize; 1397 // Use correct context client to send message 1398 CContextClient* contextClientTmp = (0 != context->clientPrimServer) ? context->clientPrimServer 1399 : context->client; 1400 1401 // CContextClient* client = context->client; 1402 int nbServer = contextClientTmp->serverSize; 1399 1403 1400 1404 CServerDistributionDescription serverDescription(nGlobDomain_, nbServer); … … 1406 1410 1407 1411 CEventClient event(getType(),EVENT_ID_SERVER_ATTRIBUT); 1408 if (c lient->isServerLeader())1412 if (contextClientTmp->isServerLeader()) 1409 1413 { 1410 1414 std::list<CMessage> msgs; 1411 1415 1412 const std::list<int>& ranks = c lient->getRanksServerLeader();1416 const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 1413 1417 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1414 1418 { … … 1430 1434 event.push(*itRank,1,msg); 1431 1435 } 1432 c lient->sendEvent(event);1433 } 1434 else c lient->sendEvent(event);1436 contextClientTmp->sendEvent(event); 1437 } 1438 else contextClientTmp->sendEvent(event); 1435 1439 } 1436 1440 … … 1852 1856 *buffer>>domainId ; 1853 1857 get(domainId)->recvServerAttribut(*buffer) ; 1858 1859 CContext* context = CContext::getCurrent(); 1860 if (context->hasClient && context->hasServer) 1861 { 1862 get(domainId)->sendServerAttribut(); 1863 } 1864 1854 1865 } 1855 1866 -
XIOS/dev/dev_olga/src/node/domain.hpp
r953 r987 42 42 , public CDomainAttributes 43 43 { 44 44 /// typedef /// 45 typedef CObjectTemplate<CDomain> SuperClass; 46 typedef CDomainAttributes SuperClassAttribute; 47 48 public : 45 49 enum EEventId 46 50 { … … 48 52 } ; 49 53 50 /// typedef /// 51 typedef CObjectTemplate<CDomain> SuperClass; 52 typedef CDomainAttributes SuperClassAttribute; 54 53 55 54 56 public: -
XIOS/dev/dev_olga/src/node/field.cpp
r983 r987 1251 1251 void CField::sendAddVariable(const string& id) 1252 1252 { 1253 CContext* context = CContext::getCurrent(); 1254 1255 if (!context->hasServer) 1256 { 1257 CContextClient* client = context->client; 1258 1259 CEventClient event(this->getType(),EVENT_ID_ADD_VARIABLE); 1260 if (client->isServerLeader()) 1261 { 1262 CMessage msg; 1263 msg << this->getId(); 1264 msg << id; 1265 const std::list<int>& ranks = client->getRanksServerLeader(); 1266 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1267 event.push(*itRank,1,msg); 1268 client->sendEvent(event); 1269 } 1270 else client->sendEvent(event); 1271 } 1253 sendAddItem(id, (int)EVENT_ID_ADD_VARIABLE); 1254 // CContext* context = CContext::getCurrent(); 1255 1256 // if (!context->hasServer) 1257 // { 1258 // CContextClient* client = context->client; 1259 1260 // CEventClient event(this->getType(),EVENT_ID_ADD_VARIABLE); 1261 // if (client->isServerLeader()) 1262 // { 1263 // CMessage msg; 1264 // msg << this->getId(); 1265 // msg << id; 1266 // const std::list<int>& ranks = client->getRanksServerLeader(); 1267 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1268 // event.push(*itRank,1,msg); 1269 // client->sendEvent(event); 1270 // } 1271 // else client->sendEvent(event); 1272 // } 1272 1273 } 1273 1274 1274 1275 void CField::sendAddVariableGroup(const string& id) 1275 1276 { 1276 CContext* context = CContext::getCurrent(); 1277 if (!context->hasServer) 1278 { 1279 CContextClient* client = context->client; 1280 1281 CEventClient event(this->getType(),EVENT_ID_ADD_VARIABLE_GROUP); 1282 if (client->isServerLeader()) 1283 { 1284 CMessage msg; 1285 msg << this->getId(); 1286 msg << id; 1287 const std::list<int>& ranks = client->getRanksServerLeader(); 1288 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1289 event.push(*itRank,1,msg); 1290 client->sendEvent(event); 1291 } 1292 else client->sendEvent(event); 1293 } 1277 sendAddItem(id, (int)EVENT_ID_ADD_VARIABLE_GROUP); 1278 // CContext* context = CContext::getCurrent(); 1279 // if (!context->hasServer) 1280 // { 1281 // CContextClient* client = context->client; 1282 1283 // CEventClient event(this->getType(),EVENT_ID_ADD_VARIABLE_GROUP); 1284 // if (client->isServerLeader()) 1285 // { 1286 // CMessage msg; 1287 // msg << this->getId(); 1288 // msg << id; 1289 // const std::list<int>& ranks = client->getRanksServerLeader(); 1290 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1291 // event.push(*itRank,1,msg); 1292 // client->sendEvent(event); 1293 // } 1294 // else client->sendEvent(event); 1295 // } 1294 1296 } 1295 1297 -
XIOS/dev/dev_olga/src/node/file.cpp
r957 r987 826 826 void CFile::sendAddField(const string& id) 827 827 { 828 CContext* context = CContext::getCurrent(); 829 830 if (! context->hasServer ) 831 { 832 CContextClient* client = context->client; 833 834 CEventClient event(this->getType(),EVENT_ID_ADD_FIELD); 835 if (client->isServerLeader()) 836 { 837 CMessage msg; 838 msg << this->getId(); 839 msg << id; 840 const std::list<int>& ranks = client->getRanksServerLeader(); 841 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 842 event.push(*itRank,1,msg); 843 client->sendEvent(event); 844 } 845 else client->sendEvent(event); 846 } 828 sendAddItem(id, EVENT_ID_ADD_FIELD); 829 // CContext* context = CContext::getCurrent(); 830 831 // if (! context->hasServer ) 832 // { 833 // CContextClient* client = context->client; 834 835 // CEventClient event(this->getType(),EVENT_ID_ADD_FIELD); 836 // if (client->isServerLeader()) 837 // { 838 // CMessage msg; 839 // msg << this->getId(); 840 // msg << id; 841 // const std::list<int>& ranks = client->getRanksServerLeader(); 842 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 843 // event.push(*itRank,1,msg); 844 // client->sendEvent(event); 845 // } 846 // else client->sendEvent(event); 847 // } 847 848 848 849 } … … 854 855 void CFile::sendAddFieldGroup(const string& id) 855 856 { 856 CContext* context = CContext::getCurrent(); 857 if (! context->hasServer ) 858 { 859 CContextClient* client = context->client; 860 861 CEventClient event(this->getType(),EVENT_ID_ADD_FIELD_GROUP); 862 if (client->isServerLeader()) 863 { 864 CMessage msg; 865 msg << this->getId(); 866 msg << id; 867 const std::list<int>& ranks = client->getRanksServerLeader(); 868 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 869 event.push(*itRank,1,msg); 870 client->sendEvent(event); 871 } 872 else client->sendEvent(event); 873 } 857 sendAddItem(id, (int)EVENT_ID_ADD_FIELD_GROUP); 858 // CContext* context = CContext::getCurrent(); 859 // if (! context->hasServer ) 860 // { 861 // CContextClient* client = context->client; 862 863 // CEventClient event(this->getType(),EVENT_ID_ADD_FIELD_GROUP); 864 // if (client->isServerLeader()) 865 // { 866 // CMessage msg; 867 // msg << this->getId(); 868 // msg << id; 869 // const std::list<int>& ranks = client->getRanksServerLeader(); 870 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 871 // event.push(*itRank,1,msg); 872 // client->sendEvent(event); 873 // } 874 // else client->sendEvent(event); 875 // } 874 876 875 877 } … … 950 952 void CFile::sendAddVariable(const string& id) 951 953 { 952 CContext* context = CContext::getCurrent(); 953 954 if (! context->hasServer ) 955 { 956 CContextClient* client = context->client; 957 958 CEventClient event(this->getType(),EVENT_ID_ADD_VARIABLE); 959 if (client->isServerLeader()) 960 { 961 CMessage msg; 962 msg << this->getId(); 963 msg << id; 964 const std::list<int>& ranks = client->getRanksServerLeader(); 965 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 966 event.push(*itRank,1,msg); 967 client->sendEvent(event); 968 } 969 else client->sendEvent(event); 970 } 954 sendAddItem(id, (int)EVENT_ID_ADD_VARIABLE); 955 // CContext* context = CContext::getCurrent(); 956 957 // if (! context->hasServer ) 958 // { 959 // CContextClient* client = context->client; 960 961 // CEventClient event(this->getType(),EVENT_ID_ADD_VARIABLE); 962 // if (client->isServerLeader()) 963 // { 964 // CMessage msg; 965 // msg << this->getId(); 966 // msg << id; 967 // const std::list<int>& ranks = client->getRanksServerLeader(); 968 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 969 // event.push(*itRank,1,msg); 970 // client->sendEvent(event); 971 // } 972 // else client->sendEvent(event); 973 // } 971 974 972 975 } … … 978 981 void CFile::sendAddVariableGroup(const string& id) 979 982 { 980 CContext* context = CContext::getCurrent(); 981 if (! context->hasServer ) 982 { 983 CContextClient* client = context->client; 984 985 CEventClient event(this->getType(),EVENT_ID_ADD_VARIABLE_GROUP); 986 if (client->isServerLeader()) 987 { 988 CMessage msg; 989 msg << this->getId(); 990 msg << id; 991 const std::list<int>& ranks = client->getRanksServerLeader(); 992 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 993 event.push(*itRank,1,msg); 994 client->sendEvent(event); 995 } 996 else client->sendEvent(event); 997 } 983 sendAddItem(id, (int)EVENT_ID_ADD_VARIABLE_GROUP); 984 // CContext* context = CContext::getCurrent(); 985 // if (! context->hasServer ) 986 // { 987 // CContextClient* client = context->client; 988 989 // CEventClient event(this->getType(),EVENT_ID_ADD_VARIABLE_GROUP); 990 // if (client->isServerLeader()) 991 // { 992 // CMessage msg; 993 // msg << this->getId(); 994 // msg << id; 995 // const std::list<int>& ranks = client->getRanksServerLeader(); 996 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 997 // event.push(*itRank,1,msg); 998 // client->sendEvent(event); 999 // } 1000 // else client->sendEvent(event); 1001 // } 998 1002 999 1003 } -
XIOS/dev/dev_olga/src/node/grid.cpp
r983 r987 1514 1514 void CGrid::sendAddDomain(const string& id) 1515 1515 { 1516 CContext* context=CContext::getCurrent(); 1517 1518 if (! context->hasServer ) 1519 { 1520 CContextClient* client=context->client; 1521 1522 CEventClient event(this->getType(),EVENT_ID_ADD_DOMAIN); 1523 if (client->isServerLeader()) 1524 { 1525 CMessage msg; 1526 msg<<this->getId(); 1527 msg<<id; 1528 const std::list<int>& ranks = client->getRanksServerLeader(); 1529 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1530 event.push(*itRank,1,msg); 1531 client->sendEvent(event); 1532 } 1533 else client->sendEvent(event); 1534 } 1516 sendAddItem(id, (int)EVENT_ID_ADD_DOMAIN); 1517 // CContext* context=CContext::getCurrent(); 1518 1519 // if (! context->hasServer ) 1520 // { 1521 // CContextClient* client=context->client; 1522 1523 // CEventClient event(this->getType(),EVENT_ID_ADD_DOMAIN); 1524 // if (client->isServerLeader()) 1525 // { 1526 // CMessage msg; 1527 // msg<<this->getId(); 1528 // msg<<id; 1529 // const std::list<int>& ranks = client->getRanksServerLeader(); 1530 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1531 // event.push(*itRank,1,msg); 1532 // client->sendEvent(event); 1533 // } 1534 // else client->sendEvent(event); 1535 // } 1535 1536 } 1536 1537 … … 1541 1542 void CGrid::sendAddAxis(const string& id) 1542 1543 { 1543 CContext* context=CContext::getCurrent(); 1544 1545 if (! context->hasServer ) 1546 { 1547 CContextClient* client=context->client; 1548 1549 CEventClient event(this->getType(),EVENT_ID_ADD_AXIS); 1550 if (client->isServerLeader()) 1551 { 1552 CMessage msg; 1553 msg<<this->getId(); 1554 msg<<id; 1555 const std::list<int>& ranks = client->getRanksServerLeader(); 1556 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1557 event.push(*itRank,1,msg); 1558 client->sendEvent(event); 1559 } 1560 else client->sendEvent(event); 1561 } 1544 sendAddItem(id, (int)EVENT_ID_ADD_AXIS); 1545 // CContext* context=CContext::getCurrent(); 1546 1547 // if (! context->hasServer ) 1548 // { 1549 // CContextClient* client=context->client; 1550 1551 // CEventClient event(this->getType(),EVENT_ID_ADD_AXIS); 1552 // if (client->isServerLeader()) 1553 // { 1554 // CMessage msg; 1555 // msg<<this->getId(); 1556 // msg<<id; 1557 // const std::list<int>& ranks = client->getRanksServerLeader(); 1558 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1559 // event.push(*itRank,1,msg); 1560 // client->sendEvent(event); 1561 // } 1562 // else client->sendEvent(event); 1563 // } 1562 1564 } 1563 1565 … … 1568 1570 void CGrid::sendAddScalar(const string& id) 1569 1571 { 1570 CContext* context=CContext::getCurrent(); 1571 1572 if (! context->hasServer ) 1573 { 1574 CContextClient* client=context->client; 1575 1576 CEventClient event(this->getType(),EVENT_ID_ADD_SCALAR); 1577 if (client->isServerLeader()) 1578 { 1579 CMessage msg; 1580 msg<<this->getId(); 1581 msg<<id; 1582 const std::list<int>& ranks = client->getRanksServerLeader(); 1583 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1584 event.push(*itRank,1,msg); 1585 client->sendEvent(event); 1586 } 1587 else client->sendEvent(event); 1588 } 1572 sendAddItem(id, (int)EVENT_ID_ADD_SCALAR); 1573 // CContext* context=CContext::getCurrent(); 1574 1575 // if (! context->hasServer ) 1576 // { 1577 // CContextClient* client=context->client; 1578 1579 // CEventClient event(this->getType(),EVENT_ID_ADD_SCALAR); 1580 // if (client->isServerLeader()) 1581 // { 1582 // CMessage msg; 1583 // msg<<this->getId(); 1584 // msg<<id; 1585 // const std::list<int>& ranks = client->getRanksServerLeader(); 1586 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1587 // event.push(*itRank,1,msg); 1588 // client->sendEvent(event); 1589 // } 1590 // else client->sendEvent(event); 1591 // } 1589 1592 } 1590 1593 -
XIOS/dev/dev_olga/src/node/variable.cpp
r773 r987 82 82 { 83 83 CContext* context=CContext::getCurrent() ; 84 if (!context->hasServer) 84 85 if (context->hasClient) 85 86 { 86 CContextClient* client=context->client ; 87 // Use correct context client to send message 88 CContextClient* contextClientTmp = (0 != context->clientPrimServer) ? context->clientPrimServer 89 : context->client; 87 90 88 91 CEventClient event(this->getType(),EVENT_ID_VARIABLE_VALUE) ; 89 if (c lient->isServerLeader())92 if (contextClientTmp->isServerLeader()) 90 93 { 91 94 CMessage msg ; 92 95 msg<<this->getId() ; 93 96 msg<<content ; 94 const std::list<int>& ranks = c lient->getRanksServerLeader();97 const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 95 98 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 96 99 event.push(*itRank,1,msg); 97 c lient->sendEvent(event) ;100 contextClientTmp->sendEvent(event) ; 98 101 } 99 else c lient->sendEvent(event) ;102 else contextClientTmp->sendEvent(event) ; 100 103 } 104 105 106 // if (!context->hasServer) 107 // { 108 // CContextClient* client=context->client ; 109 110 // CEventClient event(this->getType(),EVENT_ID_VARIABLE_VALUE) ; 111 // if (client->isServerLeader()) 112 // { 113 // CMessage msg ; 114 // msg<<this->getId() ; 115 // msg<<content ; 116 // const std::list<int>& ranks = client->getRanksServerLeader(); 117 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 118 // event.push(*itRank,1,msg); 119 // client->sendEvent(event) ; 120 // } 121 // else client->sendEvent(event) ; 122 // } 101 123 } 102 124 -
XIOS/dev/dev_olga/src/node/variable.hpp
r773 r987 31 31 , public CVariableAttributes 32 32 { 33 /// typedef /// 34 typedef CObjectTemplate<CVariable> SuperClass; 35 typedef CVariableAttributes SuperClassAttribute; 36 37 public : 33 38 enum EEventId 34 39 { 35 40 EVENT_ID_VARIABLE_VALUE 36 41 }; 37 38 /// typedef ///39 typedef CObjectTemplate<CVariable> SuperClass;40 typedef CVariableAttributes SuperClassAttribute;41 42 42 43 friend class CVariableGroup; -
XIOS/dev/dev_olga/src/object_template.hpp
r731 r987 58 58 void sendAttributToServer(CAttribute& attr) ; 59 59 void sendAllAttributesToServer(); 60 void sendAddItem(const string& id, int itemType); 60 61 static void recvAttributFromClient(CEventServer& event) ; 61 62 static bool dispatchEvent(CEventServer& event) ; -
XIOS/dev/dev_olga/src/object_template_impl.hpp
r769 r987 164 164 std::map<int, size_t> CObjectTemplate<T>::getMinimumBufferSizeForAttributes() 165 165 { 166 CContextClient* client = CContext::getCurrent()->client; 166 // CContextClient* client = CContext::getCurrent()->client; 167 CContext* context = CContext::getCurrent(); 168 169 // Use correct context client to send message 170 CContextClient* contextClientTmp = (0 != context->clientPrimServer) ? context->clientPrimServer : context->client; 171 167 172 std::map<int, size_t> minimumSizes; 168 173 169 if (c lient->isServerLeader())174 if (contextClientTmp->isServerLeader()) 170 175 { 171 176 size_t minimumSize = 0; … … 187 192 minimumSize += CEventClient::headerSize + getIdServer().size() + sizeof(size_t); 188 193 189 const std::list<int>& ranks = c lient->getRanksServerLeader();194 const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 190 195 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 191 196 minimumSizes.insert(std::make_pair(*itRank, minimumSize)); 192 197 } 193 198 } 199 200 // if (client->isServerLeader()) 201 // { 202 // size_t minimumSize = 0; 203 // CAttributeMap& attrMap = *this; 204 // CAttributeMap::const_iterator it = attrMap.begin(), itE = attrMap.end(); 205 // for (; it != itE; ++it) 206 // { 207 // if (!it->second->isEmpty()) 208 // { 209 // size_t size = it->second->getName().size() + sizeof(size_t) + it->second->size(); 210 // if (size > minimumSize) 211 // minimumSize = size; 212 // } 213 // } 214 215 // if (minimumSize) 216 // { 217 // // Account for extra header info 218 // minimumSize += CEventClient::headerSize + getIdServer().size() + sizeof(size_t); 219 220 // const std::list<int>& ranks = client->getRanksServerLeader(); 221 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 222 // minimumSizes.insert(std::make_pair(*itRank, minimumSize)); 223 // } 224 // } 194 225 195 226 return minimumSizes; … … 220 251 CContext* context=CContext::getCurrent(); 221 252 222 if (!context->hasServer) 253 // Use correct context client to send message 254 CContextClient* contextClientTmp = (0 != context->clientPrimServer) ? context->clientPrimServer : context->client; 255 256 // if (!context->hasServer) 257 if (context->hasClient) 223 258 { 224 CContextClient* client=context->client;259 // CContextClient* contextClientTmp=context->contextClientTmp; 225 260 226 261 CEventClient event(getType(),EVENT_ID_SEND_ATTRIBUTE); 227 if (c lient->isServerLeader())262 if (contextClientTmp->isServerLeader()) 228 263 { 229 264 CMessage msg; … … 232 267 msg << attr.getName(); 233 268 msg << attr; 234 const std::list<int>& ranks = c lient->getRanksServerLeader();269 const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 235 270 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 236 271 event.push(*itRank,1,msg); 237 c lient->sendEvent(event);272 contextClientTmp->sendEvent(event); 238 273 } 239 else c lient->sendEvent(event);274 else contextClientTmp->sendEvent(event); 240 275 } 241 276 277 // // if (!context->hasServer) 278 // if (context->hasClient) 279 // { 280 // CContextClient* client=context->client; 281 282 // CEventClient event(getType(),EVENT_ID_SEND_ATTRIBUTE); 283 // if (client->isServerLeader()) 284 // { 285 // CMessage msg; 286 // // msg << this->getId(); 287 // msg << this->getIdServer(); 288 // msg << attr.getName(); 289 // msg << attr; 290 // const std::list<int>& ranks = client->getRanksServerLeader(); 291 // for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 292 // event.push(*itRank,1,msg); 293 // client->sendEvent(event); 294 // } 295 // else client->sendEvent(event); 296 // } 297 298 } 299 300 /*! 301 This generic funtion only provides instance for sending, for receving, each 302 child class must define itself. 303 \param [in] id Id of added item 304 \param [in] itemType type of added item 305 */ 306 template<class T> 307 void CObjectTemplate<T>::sendAddItem(const StdString& id, int itemType) 308 { 309 CContext* context = CContext::getCurrent(); 310 typedef typename T::EEventId ItemType; 311 if (context->hasClient) 312 { 313 // Use correct context client to send message 314 CContextClient* contextClientTmp = (0 != context->clientPrimServer) ? context->clientPrimServer : context->client; 315 CEventClient event(this->getType(),ItemType(itemType)); 316 if (contextClientTmp->isServerLeader()) 317 { 318 CMessage msg; 319 msg << this->getId(); 320 msg << id; 321 const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 322 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 323 event.push(*itRank,1,msg); 324 contextClientTmp->sendEvent(event); 325 } 326 else contextClientTmp->sendEvent(event); 327 } 242 328 } 243 329 -
XIOS/dev/dev_olga/src/server.hpp
r983 r987 14 14 public: 15 15 static void initialize(void); 16 static void initialize(const StdString& serverId); 16 17 static void finalize(void); 17 18 static void eventLoop(void); -
XIOS/dev/dev_olga/src/test/test_client.f90
r983 r987 128 128 129 129 PRINT*,"field field_A is active ? ",xios_field_is_active("field_A") 130 DO ts=1,24 *10130 DO ts=1,24 131 131 CALL xios_update_calendar(ts) 132 132 CALL xios_send_field("field_A",field_A)
Note: See TracChangeset
for help on using the changeset viewer.