hpx/parcelport_libfabric/sender.hpp

See Public API for a list of names and headers that are part of the public HPX API.

namespace hpx
namespace parcelset
namespace policies
namespace libfabric
struct sender : public hpx::parcelset::policies::libfabric::rma_base

Public Types

typedef libfabric_region_provider region_provider
typedef rma_memory_region<region_provider> region_type
typedef rma_memory_pool<region_provider> memory_pool_type
typedef header<HPX_PARCELPORT_LIBFABRIC_MESSAGE_HEADER_SIZE> header_type
typedef pinned_memory_vector<char, header_size, region_type, memory_pool_type> snd_data_type
typedef parcel_buffer<snd_data_type, serialization::serialization_chunk> snd_buffer_type
typedef hpx::detail::small_vector<region_type*, 8> zero_copy_vector

Public Functions

sender(parcelport *pp, fid_ep *endpoint, fid_domain *domain, memory_pool_type *memory_pool)
~sender()
snd_buffer_type get_new_buffer()
template<typename Handler, typename ParcelPostprocess>
void async_write(Handler&&, ParcelPostprocess&&)
void verify_(parcelset::locality const&) const
void async_write_impl()
void handle_send_completion()
void handle_message_completion_ack()
void cleanup()
void handle_error(struct fi_cq_err_entry err)

Public Members

parcelport *parcelport_
fid_ep *endpoint_
fid_domain *domain_
memory_pool_type *memory_pool_
fi_addr_t dst_addr_
snd_buffer_type buffer_
region_type *header_region_
region_type *chunk_region_
region_type *message_region_
header_type *header_
zero_copy_vector rma_regions_
hpx::util::atomic_count completion_count_
performance_counter<unsigned int> sends_posted_
performance_counter<unsigned int> sends_deleted_
performance_counter<unsigned int> acks_received_
hpx::move_only_function<void(error_code const&)> handler_
hpx::function<void(sender*)> postprocess_handler_
struct iovec region_list_[2]
void *desc_[2]

Public Static Attributes

constexpr unsigned int header_size = header_type::header_block_size