#ifndef __WECHATSESSION_H__ #define __WECHATSESSION_H__ #include #include #include #include #include class ProcessInputEvent : public boost::statechart::event { public: std::string text; }; class IdleState; class WeChatSession : public boost::statechart::state_machine { public: WeChatSession(const std::string_view &username); std::string processInput(const std::string_view &text); void printHelp(); void printCurrentDateTime(); void playRandomMusic(); void stopPlayMusic(); std::chrono::system_clock::time_point lastAccessedTime() const; void setReply(std::string &&reply); private: std::string m_username; std::chrono::system_clock::time_point m_lastAccessedTime; std::string m_reply; }; class IdleState : public boost::statechart::simple_state { public: typedef boost::statechart::custom_reaction reactions; boost::statechart::result react(const ProcessInputEvent &); }; class SetAlarmState : public boost::statechart::simple_state { public: typedef boost::statechart::custom_reaction reactions; boost::statechart::result react(const ProcessInputEvent &); SetAlarmState(); }; class SetTtsState : public boost::statechart::simple_state { public: typedef boost::statechart::custom_reaction reactions; boost::statechart::result react(const ProcessInputEvent &); }; #endif // __WECHATSESSION_H__