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