X-Git-Url: http://git.tdb.fi/?p=r2c2.git;a=blobdiff_plain;f=source%2Fnetwork%2Fserver.h;h=50c0f72fae98d6ac2a0f0ce00e7d49a9b194ad02;hp=6ce965e555d05009c66fbd35c9b89e886c859d67;hb=d13d841852d1fc5f97c40f93221745a63fae5e11;hpb=010d8321e982d1684fcbff5bf6fc2bdec7cb7bae diff --git a/source/network/server.h b/source/network/server.h index 6ce965e..50c0f72 100644 --- a/source/network/server.h +++ b/source/network/server.h @@ -1,28 +1,24 @@ -/* $Id$ - -This file is part of the MSP Märklin suite -Copyright © 2009 Mikkosoft Productions, Mikko Rasa -Distributed under the GPL -*/ - -#ifndef MARKLINNET_SERVER_H_ -#define MARKLINNET_SERVER_H_ +#ifndef R2C2_NET_SERVER_H_ +#define R2C2_NET_SERVER_H_ #include #include #include -#include -#include "libmarklin/trafficmanager.h" +#include +#include "libr2c2/layout.h" +#include "libr2c2/trainai.h" #include "packets.h" #include "protocol.h" -namespace Marklin { +namespace R2C2 { class Server { private: - struct Connection: private Msp::Net::PacketReceiver, - private Msp::Net::PacketReceiver + struct Connection: Msp::Net::PacketReceiver, + Msp::Net::PacketReceiver, + Msp::Net::PacketReceiver, + Msp::Net::PacketReceiver { Server &server; Msp::Net::StreamSocket *socket; @@ -34,31 +30,39 @@ private: void handshake_done(); void end_of_file(); - virtual void receive(const TrainSpeedPacket &); + virtual void receive(const DriverStatePacket &); + virtual void receive(const TrainControlPacket &); virtual void receive(const TrainFunctionPacket &); + virtual void receive(const TrainRoutePacket &); + void comm_error(const std::exception &); + void error(const std::string &); }; Protocol proto; - TrafficManager &trfc_mgr; - Msp::Net::StreamListenSocket listen_sock; + Layout &layout; + Msp::Net::StreamServerSocket listen_sock; Msp::IO::EventDispatcher *event_disp; std::vector connections; public: - Server(TrafficManager &); + Server(Layout &); + ~Server(); + void use_event_dispatcher(Msp::IO::EventDispatcher &); private: void incoming_connection(); + void driver_state_changed(); + void emergency(Block *, const std::string &); void train_added(Train &); - void train_speed_changed(const Train &, unsigned); + void train_control_changed(const Train &, const std::string &, float); void train_function_changed(const Train &, unsigned, bool); - void train_status_changed(const Train &, const std::string &); + void train_ai_event(const Train &, TrainAI &, const TrainAI::Message &); template void send(const P &); }; -} // namespace Marklin +} // namespace R2C2 #endif