X-Git-Url: https://git.ucc.asn.au/?p=progcomp2012.git;a=blobdiff_plain;f=judge%2Fmanager%2Fnetwork_controller.h;h=31b0c92b06e69ac292daeb566abca14a4427d95a;hp=cf80a804621bc62d91c30b89d04bdf4bf55ec926;hb=ac335e7c423d067effae82cc80db518f896271b9;hpb=48216daa641008e0de21c5522d6e958a38b02093 diff --git a/judge/manager/network_controller.h b/judge/manager/network_controller.h index cf80a80..31b0c92 100644 --- a/judge/manager/network_controller.h +++ b/judge/manager/network_controller.h @@ -1,51 +1,57 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - - #include "controller.h" +#include "ai_controller.h" +#include "human_controller.h" +#include "network.h" #ifndef NETWORK_CONTROLLER_H #define NETWORK_CONTROLLER_H - class NetworkController : public Controller { public: - NetworkController(const Piece::Colour & newColour, const char * newName = "no-name"); - virtual ~NetworkController(); - - virtual bool Valid() {return sfd != -1;} + NetworkController(const Piece::Colour & colour, Network * newNetwork) : Controller(colour), network(newNetwork) {} + virtual ~NetworkController() {} - virtual void Message(const char * string) {fprintf(stderr, "NetworkController unimplemented!\n"); assert(false);} - virtual MovementResult QuerySetup(const char * opponentName, std::string setup[]) {fprintf(stderr, "NetworkController unimplemented!\n"); assert(false);} - virtual MovementResult QueryMove(std::string & buffer) {fprintf(stderr, "NetworkController unimplemented!\n"); assert(false);} + //virtual void Message(const char * message) = 0; + virtual bool Valid() const {return network->Valid();} protected: - int sfd; int cfd; - static const int port = 666; + Network * network; }; -class Server : public NetworkController +class NetworkSender : public NetworkController { public: - Server(const Piece::Colour & newColour, const char * newName = "no-name"); - virtual ~Server() {} + NetworkSender(const Piece::Colour & colour, Controller * newController, Network * newNetwork) : NetworkController(colour, newNetwork), controller(newController) {} + virtual ~NetworkSender() {delete controller;} + + virtual bool Valid() const {return NetworkController::Valid() && controller->Valid();} + + virtual void Message(const char * message) + { + //fprintf(stderr,"NetworkSender sending message %s to underlying controller\n", message); + controller->Message(message); + } + + virtual MovementResult QuerySetup(const char * opponentName, std::string setup[]); + virtual MovementResult QueryMove(std::string & buffer); + + private: + Controller * controller; + }; -class Client : public NetworkController +class NetworkReceiver : public NetworkController { public: - Client(const Piece::Colour & newColour, const char * newName = "no-name", const char * server="127.0.0.1"); - virtual ~Client() {} + NetworkReceiver(const Piece::Colour & colour, Network * newNetwork) : NetworkController(colour, newNetwork) {} + virtual ~NetworkReceiver() {} + + virtual void Message(const char * message) {} //Do nothing (Counter intuitive much) + virtual MovementResult QuerySetup(const char * opponentName, std::string setup[]); + virtual MovementResult QueryMove(std::string & buffer); + + }; #endif //NETWORK_CONTROLLER_H