/** * @file broker.h * @brief Declaration of the Broker class. * @author Andreas Aardal Hanssen * @date 2002-2005 */ #ifndef broker_h_included #define broker_h_included #include "depot.h" #include "operators.h" #include "recursivedescent.h" #include "session.h" #include #include namespace Binc { class Request; class Broker; class BrokerFactory { private: std::map brokers; BrokerFactory(); mutable std::string lastError; public: Broker *getBroker(Session::State state); void assign(const std::string &fname, Operator *o); void addCapability(const std::string &c); Operator *getOperator(Session::State state, const std::string &name) const; inline const std::string &getLastError() const; inline void setLastError(const std::string &error) const; static BrokerFactory &getInstance(); ~BrokerFactory(); }; const std::string &BrokerFactory::getLastError() const { return lastError; } void BrokerFactory::setLastError(const std::string &error) const { lastError = error; } class Broker { private: std::map operators; std::map deletables; public: Parser &parser; Operator *get(const std::string &name) const; void assign(const std::string &fname, Operator *o, bool deletable = false); Parser::ParseResult parseStub(Request &cmd); Broker(Parser &p) : parser(p){}; Broker(Broker &&) = default; }; } #endif