Derecho  0.9
Distributed systems toolkit for RDMA
Classes | Namespaces | Functions
multicast_group.hpp File Reference
#include <assert.h>
#include <condition_variable>
#include <functional>
#include <list>
#include <map>
#include <memory>
#include <mutex>
#include <optional>
#include <ostream>
#include <queue>
#include <set>
#include <tuple>
#include <vector>
#include "../derecho_modes.hpp"
#include "../subgroup_info.hpp"
#include "connection_manager.hpp"
#include "derecho_internal.hpp"
#include "derecho_sst.hpp"
#include <derecho/conf/conf.hpp>
#include <derecho/mutils-serialization/SerializationMacros.hpp>
#include <derecho/mutils-serialization/SerializationSupport.hpp>
#include <derecho/rdmc/rdmc.hpp>
#include <derecho/sst/multicast.hpp>
#include <derecho/sst/sst.hpp>
#include <spdlog/spdlog.h>
Include dependency graph for multicast_group.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  derecho::CallbackSet
 Bundles together a set of callback functions for message delivery events. More...
 
struct  derecho::DerechoParams
 Bundles together a set of low-level parameters for configuring Derecho groups. More...
 
struct  derecho::MessageBuffer
 Represents a block of memory used to store a message. More...
 
struct  derecho::RDMCMessage
 A structure containing an RDMC message (which consists of some bytes in a registered memory region) and some associated metadata. More...
 
struct  derecho::SSTMessage
 
struct  derecho::SubgroupSettings
 A collection of settings for a single subgroup that this node is a member of. More...
 
class  derecho::MulticastGroup
 Implements the low-level mechanics of tracking multicasts in a Derecho group, using RDMC to deliver messages and SST to track their arrival and stability. More...
 

Namespaces

 derecho
 

Functions

struct derecho::__attribute__ ((__packed__)) header
 The header for an individual multicast message, which will always be the first sizeof(header) bytes in the message's data buffer. More...
 

Class Documentation

◆ derecho::CallbackSet

struct derecho::CallbackSet

Bundles together a set of callback functions for message delivery events.

These will be invoked by MulticastGroup or ViewManager to hand control back to the client if it wants to implement custom logic to respond to each message's arrival. (Note, this is a client-facing constructor argument, not an internal data structure).

Definition at line 39 of file multicast_group.hpp.

Class Members
persistence_callback_t global_persistence_callback
message_callback_t global_stability_callback
persistence_callback_t local_persistence_callback

◆ derecho::RDMCMessage

struct derecho::RDMCMessage

A structure containing an RDMC message (which consists of some bytes in a registered memory region) and some associated metadata.

Note that the metadata (sender_id, index, etc.) is only stored locally, not sent over the network with the message.

Definition at line 195 of file multicast_group.hpp.

Collaboration diagram for derecho::RDMCMessage:
Class Members
message_id_t index The message's index (relative to other messages sent by that sender).
MessageBuffer message_buffer The MessageBuffer that contains the message's body.
uint32_t sender_id The unique node ID of the message's sender.
long long unsigned int size The message's size in bytes.

◆ derecho::SSTMessage

struct derecho::SSTMessage

Definition at line 207 of file multicast_group.hpp.

Class Members
volatile char * buf Pointer to the message.
int32_t index The message's index (relative to other messages sent by that sender).
uint32_t sender_id The unique node ID of the message's sender.
long long unsigned int size The message's size in bytes.

◆ derecho::SubgroupSettings

struct derecho::SubgroupSettings

A collection of settings for a single subgroup that this node is a member of.

Mostly extracted from SubView, but tailored specifically to what MulticastGroup needs to know about subgroups and shards.

Definition at line 223 of file multicast_group.hpp.

Collaboration diagram for derecho::SubgroupSettings:
Class Members
vector< node_id_t > members The members of the subgroup.
Mode mode The operation mode of the subgroup.
uint32_t num_received_offset The offset of this node's num_received counter within the subgroup's SST section.
DerechoParams profile
int sender_rank This node's sender rank within the subgroup (as defined by SubView::sender_rank_of)
vector< int > senders The "is_sender" flags for members of the subgroup.
uint32_t shard_num This node's shard number within the subgroup.
uint32_t shard_rank This node's rank within its shard of the subgroup.
uint32_t slot_offset The offset of this node's slot within the subgroup's SST section.