namespace Marklin {
class Client: public Msp::Net::PacketReceiver<TrainInfoPacket>,
- Msp::Net::PacketReceiver<TrainSpeedPacket>,
Msp::Net::PacketReceiver<TrainFunctionPacket>,
- Msp::Net::PacketReceiver<TrainStatusPacket>
+ Msp::Net::PacketReceiver<TrainControlPacket>,
+ Msp::Net::PacketReceiver<TrainStatusPacket>,
+ Msp::Net::PacketReceiver<RouteInfoPacket>,
+ Msp::Net::PacketReceiver<TrainRoutePacket>,
+ Msp::Net::PacketReceiver<ErrorPacket>
{
public:
sigc::signal<void, NetTrain &> signal_train_added;
+ sigc::signal<void, const std::string &> signal_error;
private:
const Catalogue &catalogue;
Msp::Net::StreamSocket *socket;
Msp::Net::Communicator *comm;
Msp::IO::EventDispatcher *event_disp;
+ std::list<std::string> routes;
std::map<unsigned, NetTrain *> trains;
public:
{ if(comm) comm->send(pkt); }
const Catalogue &get_catalogue() const { return catalogue; }
- NetTrain &get_train(unsigned);
+ const std::list<std::string> &get_routes() const { return routes; }
+ NetTrain &get_train(unsigned) const;
+ const std::map<unsigned, NetTrain *> &get_trains() const { return trains; }
private:
virtual void receive(const TrainInfoPacket &);
- virtual void receive(const TrainSpeedPacket &);
+ virtual void receive(const TrainControlPacket &);
virtual void receive(const TrainFunctionPacket &);
virtual void receive(const TrainStatusPacket &);
+ virtual void receive(const RouteInfoPacket &);
+ virtual void receive(const TrainRoutePacket &);
+ virtual void receive(const ErrorPacket &);
};
} // namespace Marklin