Ignore:
Timestamp:
06/29/22 18:19:45 (2 years ago)
Author:
ymipsl
Message:
  • Implement new infrastructure for transfert protocol.
  • new purelly one sided protocol is now available, the previous protocol (legacy, mix send/recv and one sided) is still available. Other specific protocol could be implemented more easilly in future.
  • switch can be operate with "transport_protocol" variable in XIOS context :

ex:
<variable id="transport_protocol" type="string">one_sided</variable>

Available protocols are : one_sided, legacy or default. The default protocol is "legacy".

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/event_client.hpp

    r1377 r2343  
    1717      void push(int rank, int nbSender, CMessage& msg); 
    1818      void send(size_t timeLine, const std::list<int>& sizes, std::list<CBufferOut*>&);  
    19  
    2019      bool isEmpty(void); 
    2120      std::list<int> getRanks(void); 
     
    2423      int getTypeId(void) { return typeId; } 
    2524       
     25      void setFirst(void) 
     26      { 
     27        itRanks=ranks.begin() ; 
     28        itNbSenders=nbSenders.begin() ; 
     29        itMessages=messages.begin() ; 
     30      } 
     31 
     32      bool isFirst(void) 
     33      { 
     34        return itRanks==ranks.begin() ; 
     35      } 
     36 
     37      void next(void) 
     38      { 
     39        itRanks++ ; 
     40        if (itRanks==ranks.end()) itRanks=ranks.begin() ; 
     41        itNbSenders++ ; 
     42        if (itNbSenders==nbSenders.end()) itNbSenders=nbSenders.begin() ; 
     43        itMessages++ ; 
     44        if (itMessages==messages.end()) itMessages=messages.begin() ; 
     45      } 
     46       
     47      void remove(void) 
     48      { 
     49        auto removedRank = itRanks; 
     50        itRanks++ ; 
     51        ranks.erase(removedRank) ; 
     52        if (itRanks==ranks.end()) itRanks=ranks.begin() ; 
     53 
     54        auto removedNbSender = itNbSenders ; 
     55        itNbSenders++ ; 
     56        nbSenders.erase(removedNbSender) ; 
     57        if (itNbSenders==nbSenders.end()) itNbSenders=nbSenders.begin() ; 
     58 
     59        auto removedMessage = itMessages ; 
     60        itMessages++ ; 
     61        messages.erase(removedMessage) ; 
     62        if (itMessages==messages.end()) itMessages=messages.begin() ; 
     63      } 
     64 
     65      int getRank(void) { return *itRanks ;} 
     66      int getNbSender(void) { return *itNbSenders ;} 
     67      int getSize(void) { return (*itMessages)->size() + headerSize;} 
     68      void send(size_t timeLine, int size, CBufferOut* buffer) ; 
    2669    private: 
    2770      int classId; 
     
    3073      std::list<int> nbSenders; 
    3174      std::list<CMessage*> messages; 
     75       
     76      std::list<int>::iterator       itRanks; 
     77      std::list<int>::iterator       itNbSenders; 
     78      std::list<CMessage*>::iterator itMessages; 
    3279  }; 
    3380} 
Note: See TracChangeset for help on using the changeset viewer.