Cluster -- Cluster Abstraction Library

The Cluster library contains classes supporting cluster programming by providing a multicast-based intra-cluster communications mechanism, and derived cluster-transparent versions of file and pipe abstraction classes provided by the IO and Comm libraries.

Header Files

Config.h
Config.h defines configuration-dependent macros used by the Cluster library. It should be included by client code that wants to make decisions based on the availability of optional features.
Packet.h
Packet is a structure for the data and protocol packets sent and received by a cluster multiplexer to implement intra-cluster communication.
GatherOperation.h
Defines opcodes for available intra-cluster accumulation operations using the Multiplexer::gather method.
Multiplexer.h
Multiplexer is a class mapping several intra-cluster multicast data streams to a single UDP multicast socket. It supports dynamic creation/destruction of multicast data streams, and adds reliable transmissions to the underlying UDP multicast protocol.
ClusterPipe.h
ClusterPipe is a support class to implement intra-cluster communication pipes. ClusterPipe provides pipe management and barrier and gather operations.
MulticastPipe.h
MulticastPipe is a class derived from IO::File and Cluster::ClusterPipe representing a data stream between a single sender and multiple receivers in a multiplexed cluster environment.
ThreadSynchronizer
ThreadSynchronizer is a helper class ensuring that thread IDs stay consistent across a cluster even when different code paths are executed on each node. Uses RAII to synchronize thread IDs upon object destruction.
Clusterize
Clusterize.h contains helper functions to distribute an application across a cluster, and establish communication between node instances via a multiplexer.
StandardFile.h
StandardFile is a pair of classes derived from IO::SeekableFile to represent cluster-forwarded standard operating system files.
StandardDirectory.h
StandardDirectory is a concrete class derived from IO::Directory to read standard filesystem directories in a cluster-transparent fashion.
OpenFile.h
OpenFile.h declares convenience functions to open files in a cluster-transparent fashion.
TCPPipe.h
TCPPipe is a pair of classes derived from Comm::NetPipe to represent cluster-forwarded TCP sockets connected to remote hosts.
OpenPipe.h
OpenPipe.h declares convenience functions to open pipes in a cluster-transparent fashion.