Changeset 987 for XIOS/dev/dev_olga/src/node/context.cpp
- Timestamp:
- 11/10/16 13:29:57 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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
Note: See TracChangeset
for help on using the changeset viewer.