Derecho  0.9
Distributed systems toolkit for RDMA
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
polling_group Class Reference

#include <group_send.hpp>

Inheritance diagram for polling_group:
Inheritance graph
[legend]
Collaboration diagram for polling_group:
Collaboration graph
[legend]

Public Member Functions

 polling_group (uint16_t group_number, size_t block_size, vector< uint32_t > members, uint32_t member_index, incoming_message_callback_t upcall, completion_callback_t callback, unique_ptr< schedule > transfer_schedule)
 
virtual void receive_block (uint32_t send_imm, size_t size)
 
virtual void receive_ready_for_block (uint32_t step, uint32_t sender)
 
virtual void complete_block_send ()
 
virtual void send_message (std::shared_ptr< rdma::memory_region > message_mr, size_t offset, size_t length)
 
- Public Member Functions inherited from group
virtual ~group ()
 

Static Public Member Functions

static void initialize_message_types ()
 

Private Member Functions

void post_recv (schedule::block_transfer transfer)
 
void send_next_block ()
 
void complete_message ()
 
void prepare_for_next_message ()
 
void send_ready_for_block (uint32_t neighbor)
 
void connect (uint32_t neighbor)
 

Private Attributes

std::set< uint32_t > receivers_ready
 
unique_ptr< rdma::memory_regionfirst_block_mr
 
optional< size_t > first_block_number
 
unique_ptr< char[]> first_block_buffer
 
size_t incoming_block
 
size_t message_number = 0
 
size_t outgoing_block
 
bool sending = false
 
size_t send_step = 0
 
size_t num_received_blocks = 0
 
size_t receive_step = 0
 
vector< bool > received_blocks
 
map< size_t, rdma::endpointendpoints
 
map< size_t, rdma::endpointrfb_endpoints
 

Static Private Attributes

struct {
rdma::message_type data_block
 
rdma::message_type ready_for_block
 
message_types
 

Additional Inherited Members

- Protected Member Functions inherited from group
 group (uint16_t group_number, size_t block_size, vector< uint32_t > members, uint32_t member_index, incoming_message_callback_t upcall, completion_callback_t callback, unique_ptr< schedule > transfer_schedule)
 
- Protected Attributes inherited from group
const vector< uint32_t > members
 
const uint16_t group_number
 
const size_t block_size
 
const uint32_t num_members
 
const uint32_t member_index
 
const unique_ptr< scheduletransfer_schedule
 
std::mutex monitor
 
std::shared_ptr< rdma::memory_regionmr
 
size_t mr_offset
 
size_t message_size
 
size_t num_blocks
 
completion_callback_t completion_callback
 
incoming_message_callback_t incoming_message_upcall
 

Detailed Description

Definition at line 64 of file group_send.hpp.

Constructor & Destructor Documentation

◆ polling_group()

polling_group::polling_group ( uint16_t  group_number,
size_t  block_size,
vector< uint32_t >  members,
uint32_t  member_index,
incoming_message_callback_t  upcall,
completion_callback_t  callback,
unique_ptr< schedule transfer_schedule 
)

Definition at line 70 of file group_send.cpp.

Member Function Documentation

◆ complete_block_send()

void polling_group::complete_block_send ( )
virtual

Implements group.

Definition at line 257 of file group_send.cpp.

◆ complete_message()

void polling_group::complete_message ( )
private

Definition at line 355 of file group_send.cpp.

◆ connect()

void polling_group::connect ( uint32_t  neighbor)
private

Definition at line 438 of file group_send.cpp.

◆ initialize_message_types()

void polling_group::initialize_message_types ( )
static

Definition at line 40 of file group_send.cpp.

◆ post_recv()

void polling_group::post_recv ( schedule::block_transfer  transfer)
private

Definition at line 409 of file group_send.cpp.

◆ prepare_for_next_message()

void polling_group::prepare_for_next_message ( )
private

◆ receive_block()

void polling_group::receive_block ( uint32_t  send_imm,
size_t  size 
)
virtual

Implements group.

Definition at line 98 of file group_send.cpp.

◆ receive_ready_for_block()

void polling_group::receive_ready_for_block ( uint32_t  step,
uint32_t  sender 
)
virtual

Implements group.

Definition at line 238 of file group_send.cpp.

◆ send_message()

void polling_group::send_message ( std::shared_ptr< rdma::memory_region message_mr,
size_t  offset,
size_t  length 
)
virtual

Implements group.

Definition at line 272 of file group_send.cpp.

◆ send_next_block()

void polling_group::send_next_block ( )
private

Definition at line 300 of file group_send.cpp.

◆ send_ready_for_block()

void polling_group::send_ready_for_block ( uint32_t  neighbor)
private

Definition at line 462 of file group_send.cpp.

Member Data Documentation

◆ endpoints

map<size_t, rdma::endpoint> polling_group::endpoints
private

Definition at line 91 of file group_send.hpp.

◆ first_block_buffer

unique_ptr<char[]> polling_group::first_block_buffer
private

Definition at line 71 of file group_send.hpp.

◆ first_block_mr

unique_ptr<rdma::memory_region> polling_group::first_block_mr
private

Definition at line 69 of file group_send.hpp.

◆ first_block_number

optional<size_t> polling_group::first_block_number
private

Definition at line 70 of file group_send.hpp.

◆ incoming_block

size_t polling_group::incoming_block
private

Definition at line 73 of file group_send.hpp.

◆ message_number

size_t polling_group::message_number = 0
private

Definition at line 74 of file group_send.hpp.

◆ message_types

struct { ... } polling_group::message_types

◆ num_received_blocks

size_t polling_group::num_received_blocks = 0
private

Definition at line 82 of file group_send.hpp.

◆ outgoing_block

size_t polling_group::outgoing_block
private

Definition at line 76 of file group_send.hpp.

◆ receive_step

size_t polling_group::receive_step = 0
private

Definition at line 83 of file group_send.hpp.

◆ received_blocks

vector<bool> polling_group::received_blocks
private

Definition at line 84 of file group_send.hpp.

◆ receivers_ready

std::set<uint32_t> polling_group::receivers_ready
private

Definition at line 67 of file group_send.hpp.

◆ rfb_endpoints

map<size_t, rdma::endpoint> polling_group::rfb_endpoints
private

Definition at line 92 of file group_send.hpp.

◆ send_step

size_t polling_group::send_step = 0
private

Definition at line 78 of file group_send.hpp.

◆ sending

bool polling_group::sending = false
private

Definition at line 77 of file group_send.hpp.


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