#ifndef FLASHMQTESTCLIENT_H #define FLASHMQTESTCLIENT_H #include #include #include "subscriptionstore.h" /** * @brief The FlashMQTestClient class uses the existing server code as a client, for testing purposes. */ class FlashMQTestClient { std::shared_ptr settings; std::shared_ptr testServerWorkerThreadData; std::shared_ptr client; std::shared_ptr will; std::shared_ptr dummyThreadData; std::mutex receivedListMutex; static int clientCount; void waitForCondition(std::function f, int timeout = 1); public: std::vector receivedPackets; std::vector receivedPublishes; FlashMQTestClient(); ~FlashMQTestClient(); void start(); void connectClient(ProtocolVersion protocolVersion); void connectClient(ProtocolVersion protocolVersion, bool clean_start, uint32_t session_expiry_interval); void connectClient(ProtocolVersion protocolVersion, bool clean_start, uint32_t session_expiry_interval, std::function manipulateConnect); void subscribe(const std::string topic, char qos); void unsubscribe(const std::string &topic); void publish(const std::string &topic, const std::string &payload, char qos); void publish(Publish &pub); void clearReceivedLists(); void setWill(std::shared_ptr &will); void disconnect(ReasonCodes reason); void waitForQuit(); void waitForConnack(); void waitForMessageCount(const size_t count, int timeout = 1); }; #endif // FLASHMQTESTCLIENT_H