23 using std::unique_ptr;
    39     std::shared_ptr<rdma::memory_region> 
mr;
    47     group(uint16_t group_number, 
size_t block_size,
    48           vector<uint32_t> members, uint32_t member_index,
    51           unique_ptr<schedule> transfer_schedule);
    56     virtual void receive_block(uint32_t send_imm, 
size_t size) = 0;
    59     virtual void send_message(std::shared_ptr<rdma::memory_region> message_mr,
    60                               size_t offset, 
size_t length)
    74     size_t message_number = 0;
    82     size_t num_received_blocks = 0;
    83     size_t receive_step = 0;
    88     map<size_t, rdma::queue_pair> queue_pairs;
    89     map<size_t, rdma::queue_pair> rfb_queue_pairs;
   100     static void initialize_message_types();
   112     virtual void send_message(std::shared_ptr<rdma::memory_region> message_mr,
   113                               size_t offset, 
size_t length);
   117     void send_next_block();
   118     void complete_message();
   119     void prepare_for_next_message();
   120     void send_ready_for_block(uint32_t neighbor);
   121     void connect(uint32_t neighbor);
 const uint16_t group_number
const unique_ptr< schedule > transfer_schedule
virtual void receive_block(uint32_t send_imm, size_t size)=0
const uint32_t member_index
unique_ptr< rdma::memory_region > first_block_mr
virtual void send_message(std::shared_ptr< rdma::memory_region > message_mr, size_t offset, size_t length)=0
map< size_t, rdma::endpoint > rfb_endpoints
unique_ptr< char[]> first_block_buffer
map< size_t, rdma::endpoint > endpoints
vector< bool > received_blocks
const uint32_t num_members
virtual void receive_ready_for_block(uint32_t step, uint32_t sender)=0
virtual void complete_block_send()=0
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)
std::function< receive_destination(size_t size)> incoming_message_callback_t
std::set< uint32_t > receivers_ready
std::function< void(char *buffer, size_t size)> completion_callback_t
std::shared_ptr< rdma::memory_region > mr
optional< size_t > first_block_number
incoming_message_callback_t incoming_message_upcall
completion_callback_t completion_callback
const vector< uint32_t > members