00001 #ifndef TRANSFERER_WITH_OWNERSHIP_HPP_ 00002 #define TRANSFERER_WITH_OWNERSHIP_HPP_ 00003 00004 00005 #include "mmph_mesh.h" 00006 #include "Transferer.hpp" 00007 #include "TransferWithOwnershipData.hpp" 00008 00009 00010 namespace mmpt 00011 { 00012 00017 class TransfererWithOwnership : public mmpt::Transferer 00018 { 00019 public: 00020 TransfererWithOwnership(int my_id, const mmpt_mesh & parallel_mesh); 00021 using Transferer::doTransfer; 00022 const TransferResult& doTransfer(const TransferOrder& order); 00023 00024 00025 protected: 00026 00027 void doSendOwnership(const TransferOrder& order,TransferWithOwnershipResult& r) const ; 00028 void doRecvOwnership(const TransferOrder& order,TransferWithOwnershipResult& r) ; 00029 00030 void doMassTransferInit(const std::vector<TransferOrder>& orders); 00031 void doMassTransferClear(const std::vector<TransferOrder>& orders, 00032 std::vector<const TransferResult*> &results); 00033 00034 00035 mutable std::map<int,EntOwn> contested_vrts_ownerships; 00036 }; 00037 00038 } 00039 00040 #endif //TRANSFERER_WITH_OWNERSHIP_HPP_