]> git.tdb.fi Git - r2c2.git/blobdiff - source/network/server.h
Export AI control parameters over the network
[r2c2.git] / source / network / server.h
index febd567598e0e71def517c7a9743bfdc77706994..402e55cd6ec1bf62507218f025fb61fbccbc45f7 100644 (file)
@@ -6,7 +6,7 @@
 #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"
 
@@ -18,6 +18,7 @@ private:
        struct Connection: Msp::Net::PacketReceiver<DriverStatePacket>,
                Msp::Net::PacketReceiver<TrainControlPacket>,
                Msp::Net::PacketReceiver<TrainFunctionPacket>,
+               Msp::Net::PacketReceiver<TrainAIControlPacket>,
                Msp::Net::PacketReceiver<TrainRoutePacket>
        {
                Server &server;
@@ -33,7 +34,9 @@ private:
                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 &);
        };
 
@@ -45,17 +48,18 @@ private:
 
 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 &);