#pragma once #include #include #include #include #include #include #include struct ToxEventI; class ToxClient : public ToxDefaultImpl, public ToxEventProviderBase { private: bool _should_stop {false}; std::function _subscriber_raw {[](const auto*) {}}; // only 1? std::string _self_name; std::string _tox_profile_path; std::string _tox_profile_password; bool _tox_profile_dirty {true}; // set in callbacks public: //ToxClient(/*const CommandLine& cl*/); ToxClient(std::string_view save_path, std::string_view save_password); ~ToxClient(void); public: // tox stuff Tox* getTox(void) { return _tox; } void setDirty(void) { _tox_profile_dirty = true; } // returns false when we shoul stop the program bool iterate(void); void stop(void); // let it know it should exit void setToxProfilePath(const std::string& new_path) { _tox_profile_path = new_path; } void setSelfName(std::string_view new_name) { _self_name = new_name; toxSelfSetName(new_name); } public: // raw events void subscribeRaw(std::function fn); private: void saveToxProfile(void); };