15 #ifndef CORAL_BUS_SLAVE_CONTROL_MESSENGER_HPP    16 #define CORAL_BUS_SLAVE_CONTROL_MESSENGER_HPP    21 #include <system_error>    24 #include "boost/noncopyable.hpp"    26 #include "coral/config.h"    53 class PendingSlaveControlConnectionPrivate;
    54 struct SlaveControlConnectionPrivate;
    89     operator bool() 
const CORAL_NOEXCEPT;
   124     operator bool() 
const CORAL_NOEXCEPT;
   127     SlaveControlConnectionPrivate& Private();
   164     virtual SlaveState State() 
const CORAL_NOEXCEPT = 0;
   179     virtual void Close() = 0;
   226     virtual void GetDescription(
   275     virtual void SetVariables(
   278         SetVariablesHandler onComplete) = 0;
   325     virtual void SetPeers(
   328         SetPeersHandler onComplete) = 0;
   371     virtual void ResendVars(
   373         ResendVarsHandler onComplete) = 0;
   424         StepHandler onComplete) = 0;
   463     virtual void AcceptStep(
   465         AcceptStepHandler onComplete) = 0;
   480     virtual void Terminate() = 0;
   623 #endif // header guard PendingSlaveControlConnection ConnectToSlave(coral::net::Reactor &reactor, const coral::net::SlaveLocator &slaveLocator, int maxAttempts, std::chrono::milliseconds timeout, ConnectToSlaveHandler onComplete)
Initiates a master's connection to a slave. 
 
Slave is currently performing some action. 
Definition: slave_control_messenger.hpp:48
 
Defines the coral::bus::SlaveSetup class. 
 
VoidHandler SetVariablesHandler
Completion handler type for SetVariables() 
Definition: slave_control_messenger.hpp:232
 
std::function< void(const std::error_code &, const coral::model::SlaveDescription &)> GetDescriptionHandler
Completion handler type for GetDescription() 
Definition: slave_control_messenger.hpp:184
 
VoidHandler StepHandler
Completion handler type for Step() 
Definition: slave_control_messenger.hpp:377
 
Contains the coral::net::Reactor class and related functionality. 
 
A handle for a pending connection to a slave. 
Definition: slave_control_messenger.hpp:63
 
std::unique_ptr< ISlaveControlMessenger > MakeSlaveControlMessenger(SlaveControlConnection connection, coral::model::SlaveID slaveID, const std::string &slaveName, const SlaveSetup &setup, MakeSlaveControlMessengerHandler onComplete)
Returns an object which handles communication with a slave after the connection has been established...
 
Main module header for coral::net. 
 
Slave has performed a step and published its variables. 
Definition: slave_control_messenger.hpp:46
 
std::function< void(const std::error_code &)> VoidHandler
Basic completion handler type without any arguments aside from an error code. 
Definition: slave_control_messenger.hpp:148
 
Configuration data which is sent to each slave as they are added to the simulation. 
Definition: slave_setup.hpp:27
 
std::function< void(const std::error_code &)> MakeSlaveControlMessengerHandler
Completion handler type for MakeSlaveControlMessenger() 
Definition: slave_control_messenger.hpp:564
 
A handle for an established connection to a slave. 
Definition: slave_control_messenger.hpp:102
 
Definition: variable_io.hpp:28
 
std::function< void(const std::error_code &, SlaveControlConnection)> ConnectToSlaveHandler
Completion handler type for ConnectToSlave() 
Definition: slave_control_messenger.hpp:486
 
VoidHandler AcceptStepHandler
Completion handler type for AcceptStep() 
Definition: slave_control_messenger.hpp:428
 
SlaveState
The various states a slave may be in. 
Definition: slave_control_messenger.hpp:41
 
Slave failed to perform a time step. 
Definition: slave_control_messenger.hpp:47
 
double TimeDuration
The type used to specify (simulation) time durations. 
Definition: model.hpp:56
 
VoidHandler ResendVarsHandler
Completion handler type for ResendVars() 
Definition: slave_control_messenger.hpp:332
 
An interface for classes that implement various versions of the master/slave communication protocol...
Definition: slave_control_messenger.hpp:141
 
void Close()
Aborts the connection attempt and calls the completion handler with an error code. 
 
An implementation of the reactor pattern. 
Definition: reactor.hpp:41
 
Slave is ready. 
Definition: slave_control_messenger.hpp:45
 
virtual ~ISlaveControlMessenger() CORAL_NOEXCEPT
Destructor. 
Definition: slave_control_messenger.hpp:158
 
Class which represents the network location(s) of a slave. 
Definition: net.hpp:292
 
Main module header for coral::model. 
 
Slave is not yet connected. 
Definition: slave_control_messenger.hpp:43
 
VoidHandler SetPeersHandler
Completion handler type for SetPeers() 
Definition: slave_control_messenger.hpp:282
 
double TimePoint
The type used to specify (simulation) time points. 
Definition: model.hpp:42