@@ -18,18 +18,30 @@ namespace PokemonAutomation{
1818class ControllerConnection {
1919public:
2020 struct StatusListener {
21- virtual void pre_not_ready (){}
22- virtual void post_ready (const std::map<ControllerType, std::set<ControllerFeature>>& controllers){}
23- virtual void post_status_text_changed (const std::string& text){}
21+ // virtual void pre_connection_not_ready(ControllerConnection& connection){}
22+ virtual void post_connection_ready (
23+ ControllerConnection& connection,
24+ const std::map<ControllerType, std::set<ControllerFeature>>& controllers
25+ ){}
26+ virtual void status_text_changed (
27+ ControllerConnection& connection, const std::string& text
28+ ){}
29+ virtual void on_error (
30+ ControllerConnection& connection, const std::string& text
31+ ){};
2432 };
2533
2634 void add_status_listener (StatusListener& listener);
2735 void remove_status_listener (StatusListener& listener);
2836
2937
3038public:
39+ ControllerConnection (uint64_t sequence_number)
40+ : m_sequence_number(sequence_number)
41+ {}
3142 virtual ~ControllerConnection () = default ;
3243
44+ uint64_t sequence_number () const { return m_sequence_number; }
3345 bool is_ready () const { return m_ready.load (std::memory_order_acquire); }
3446 std::string status_text () const ;
3547
@@ -38,13 +50,17 @@ class ControllerConnection{
3850
3951protected:
4052 void set_status (const std::string& text);
53+ void declare_ready (const std::map<ControllerType, std::set<ControllerFeature>>& controllers);
4154
42- void signal_pre_not_ready ();
55+ private:
56+ // void signal_pre_not_ready();
4357 void signal_post_ready (const std::map<ControllerType, std::set<ControllerFeature>>& controllers);
4458 void signal_status_text_changed (const std::string& text);
59+ void signal_error (const std::string& text);
4560
4661
4762protected:
63+ const uint64_t m_sequence_number;
4864 std::atomic<bool > m_ready;
4965
5066private:
0 commit comments