using RobotNet.VDA5050.Factsheet;
using RobotNet.VDA5050.State;
using RobotNet.VDA5050.Type;
using RobotNet.VDA5050.Visualization;
using RobotNet10.FleetManager.Events.Events;
namespace RobotNet10.FleetManager.Events;
///
/// In-memory event bus implementation for VDA5050 robot messages
///
public class RobotEventBus : IRobotEventBus
{
public event EventHandler? StateMessageReceived;
public event EventHandler? ConnectionStateChanged;
public event EventHandler? VisualizationMessageReceived;
public event EventHandler? FactsheetMessageReceived;
public void PublishStateMessageReceived(string robotId, StateMsg stateMsg)
{
StateMessageReceived?.Invoke(this, new StateMessageReceivedEvent { RobotId = robotId, StateMessage = stateMsg });
}
public void PublishConnectionStateChanged(string robotId, ConnectionState connectionState)
{
ConnectionStateChanged?.Invoke(this, new ConnectionStateChangedEvent { RobotId = robotId, ConnectionState = connectionState });
}
public void PublishVisualizationMessageReceived(string robotId, VisualizationMsg visualizationMsg)
{
VisualizationMessageReceived?.Invoke(this, new VisualizationMessageReceivedEvent { RobotId = robotId, VisualizationMessage = visualizationMsg });
}
public void PublishFactsheetMessageReceived(string robotId, FactSheetMsg factsheetMsg)
{
FactsheetMessageReceived?.Invoke(this, new FactsheetMessageReceivedEvent { RobotId = robotId, FactsheetMessage = factsheetMsg });
}
// Domain Events
public event EventHandler? RobotModelUpdated;
public event EventHandler? RobotModelIdChanged;
public void PublishRobotModelUpdated(RobotModelUpdatedEvent e)
{
RobotModelUpdated?.Invoke(this, e);
}
public void PublishRobotModelIdChanged(RobotModelIdChangedEvent e)
{
RobotModelIdChanged?.Invoke(this, e);
}
}