#include <msp/net/streamsocket.h>
#include <msp/net/streamserversocket.h>
#include "libr2c2/layout.h"
-#include "libr2c2/trainstatus.h"
+#include "libr2c2/trainai.h"
#include "packets.h"
#include "protocol.h"
struct Connection: Msp::Net::PacketReceiver<DriverStatePacket>,
Msp::Net::PacketReceiver<TrainControlPacket>,
Msp::Net::PacketReceiver<TrainFunctionPacket>,
+ Msp::Net::PacketReceiver<TrainAIControlPacket>,
Msp::Net::PacketReceiver<TrainRoutePacket>
{
Server &server;
virtual void receive(const DriverStatePacket &);
virtual void receive(const TrainControlPacket &);
virtual void receive(const TrainFunctionPacket &);
+ virtual void receive(const TrainAIControlPacket &);
virtual void receive(const TrainRoutePacket &);
+ void comm_error(const std::exception &);
void error(const std::string &);
};
public:
Server(Layout &);
+ ~Server();
+
void use_event_dispatcher(Msp::IO::EventDispatcher &);
private:
void incoming_connection();
void driver_state_changed();
- void emergency(const std::string &);
+ void emergency(Block *, const std::string &);
void train_added(Train &);
void train_control_changed(const Train &, const std::string &, float);
void train_function_changed(const Train &, unsigned, bool);
- void train_route_changed(const Train &, const Route *);
- void train_status_changed(const Train &, const std::string &);
+ void train_ai_event(const Train &, TrainAI &, const TrainAI::Message &);
template<typename P>
void send(const P &);