Dune::NonBlockingExchangeImplementation< P2PCommunicator > Class Template Reference

#include <p2pcommunicator_impl.hh>

Public Types

typedef P2PCommunicatorType::DataHandleInterface DataHandleInterface
 
typedef P2PCommunicatorType::MessageBufferType MessageBufferType
 

Public Member Functions

 NonBlockingExchangeImplementation (const P2PCommunicatorType &p2pComm, const int tag, const bool recvBufferSizesKnown=false)
 
 NonBlockingExchangeImplementation (const P2PCommunicatorType &p2pComm, const int tag, const std::vector< MessageBufferType > &sendBuffers)
 
 ~NonBlockingExchangeImplementation ()
 
void send (const std::vector< MessageBufferType > &sendBuffers)
 
std::vector< MessageBufferTypereceive ()
 
void sendImpl (const std::vector< MessageBufferType > &sendBuffers)
 
std::vector< MessageBufferTypereceiveImpl ()
 
void receiveImpl (std::vector< MessageBufferType > &recvBuffers, DataHandleInterface *dataHandle=0)
 
void unpackRecvBufferSizeKnown (std::vector< MessageBufferType > &recvBuffers, DataHandleInterface &dataHandle)
 
void send (std::vector< MessageBufferType > &sendBuffers, DataHandleInterface &dataHandle)
 
void send (std::vector< MessageBufferType > &sendBuffer, std::vector< MessageBufferType > &recvBuffer, DataHandleInterface &dataHandle)
 
void receive (DataHandleInterface &dataHandle)
 
void exchange (DataHandleInterface &dataHandle)
 

Protected Member Functions

int sendLink (const int dest, const int tag, const MessageBufferType &msgBuffer, MPI_Request &request, MPI_Comm &comm)
 
void postReceive (const int source, const int tag, const int bufferSize, MessageBufferType &msgBuffer, MPI_Request &request, MPI_Comm &comm)
 
bool receivedMessage (MPI_Request &request, MessageBufferType &buffer)
 
bool probeAndReceive (MPI_Comm &comm, const int source, const int tag, MessageBufferType &recvBuffer)
 

Member Typedef Documentation

◆ DataHandleInterface

template<class P2PCommunicator >
typedef P2PCommunicatorType::DataHandleInterface Dune::NonBlockingExchangeImplementation< P2PCommunicator >::DataHandleInterface

◆ MessageBufferType

template<class P2PCommunicator >
typedef P2PCommunicatorType::MessageBufferType Dune::NonBlockingExchangeImplementation< P2PCommunicator >::MessageBufferType

Constructor & Destructor Documentation

◆ NonBlockingExchangeImplementation() [1/2]

template<class P2PCommunicator >
Dune::NonBlockingExchangeImplementation< P2PCommunicator >::NonBlockingExchangeImplementation ( const P2PCommunicatorType &  p2pComm,
const int  tag,
const bool  recvBufferSizesKnown = false 
)
inline

◆ NonBlockingExchangeImplementation() [2/2]

template<class P2PCommunicator >
Dune::NonBlockingExchangeImplementation< P2PCommunicator >::NonBlockingExchangeImplementation ( const P2PCommunicatorType &  p2pComm,
const int  tag,
const std::vector< MessageBufferType > &  sendBuffers 
)
inline

◆ ~NonBlockingExchangeImplementation()

template<class P2PCommunicator >
Dune::NonBlockingExchangeImplementation< P2PCommunicator >::~NonBlockingExchangeImplementation ( )
inline

Member Function Documentation

◆ exchange()

◆ postReceive()

template<class P2PCommunicator >
void Dune::NonBlockingExchangeImplementation< P2PCommunicator >::postReceive ( const int  source,
const int  tag,
const int  bufferSize,
MessageBufferType msgBuffer,
MPI_Request &  request,
MPI_Comm &  comm 
)
inlineprotected

◆ probeAndReceive()

template<class P2PCommunicator >
bool Dune::NonBlockingExchangeImplementation< P2PCommunicator >::probeAndReceive ( MPI_Comm &  comm,
const int  source,
const int  tag,
MessageBufferType recvBuffer 
)
inlineprotected

◆ receive() [1/2]

◆ receive() [2/2]

template<class P2PCommunicator >
void Dune::NonBlockingExchangeImplementation< P2PCommunicator >::receive ( DataHandleInterface dataHandle)
inline

◆ receivedMessage()

template<class P2PCommunicator >
bool Dune::NonBlockingExchangeImplementation< P2PCommunicator >::receivedMessage ( MPI_Request &  request,
MessageBufferType buffer 
)
inlineprotected

◆ receiveImpl() [1/2]

◆ receiveImpl() [2/2]

template<class P2PCommunicator >
void Dune::NonBlockingExchangeImplementation< P2PCommunicator >::receiveImpl ( std::vector< MessageBufferType > &  recvBuffers,
DataHandleInterface dataHandle = 0 
)
inline

◆ send() [1/3]

◆ send() [2/3]

template<class P2PCommunicator >
void Dune::NonBlockingExchangeImplementation< P2PCommunicator >::send ( std::vector< MessageBufferType > &  sendBuffer,
std::vector< MessageBufferType > &  recvBuffer,
DataHandleInterface dataHandle 
)
inline

◆ send() [3/3]

template<class P2PCommunicator >
void Dune::NonBlockingExchangeImplementation< P2PCommunicator >::send ( std::vector< MessageBufferType > &  sendBuffers,
DataHandleInterface dataHandle 
)
inline

◆ sendImpl()

◆ sendLink()

template<class P2PCommunicator >
int Dune::NonBlockingExchangeImplementation< P2PCommunicator >::sendLink ( const int  dest,
const int  tag,
const MessageBufferType msgBuffer,
MPI_Request &  request,
MPI_Comm &  comm 
)
inlineprotected

◆ unpackRecvBufferSizeKnown()

template<class P2PCommunicator >
void Dune::NonBlockingExchangeImplementation< P2PCommunicator >::unpackRecvBufferSizeKnown ( std::vector< MessageBufferType > &  recvBuffers,
DataHandleInterface dataHandle 
)
inline

The documentation for this class was generated from the following file: