#pragma once #include #include #include #include #include #include #include #include #include #include #include #include // fwd struct ConfigModelI; class SDBot : public RegistryMessageModelEventI { Contact3Registry& _cr; RegistryMessageModel& _rmm; ConfigModelI& _conf; //TransferManager& _tm; //std::map> _task_map; std::map _task_map; std::queue> _prompt_queue; uint64_t _last_task_counter = 0; std::optional _current_task; std::unique_ptr _cli; std::optional>> _curr_future; std::default_random_engine _rng; public: struct EndpointI { RegistryMessageModel& _rmm; std::default_random_engine& _rng; EndpointI(RegistryMessageModel& rmm, std::default_random_engine& rng) : _rmm(rmm), _rng(rng) {} virtual ~EndpointI(void) {} virtual bool handleResponse(Contact3 contact, ByteSpan data) = 0; }; private: std::unique_ptr _endpoint; public: SDBot( Contact3Registry& cr, RegistryMessageModel& rmm, ConfigModelI& conf ); ~SDBot(void); float iterate(void); public: // conf bool use_webp_for_friends = true; bool use_webp_for_groups = true; //protected: // tox events //bool onToxEvent(const Tox_Event_Friend_Message* e) override; //bool onToxEvent(const Tox_Event_Group_Message* e) override; protected: // mm bool onEvent(const Message::Events::MessageConstruct& e) override; };