#ifndef IFEIQVIEW_H #define IFEIQVIEW_H #include #include #include using namespace std; using namespace std::chrono; #include "fellow.h" #include "content.h" #include "filetask.h" #include "post.h" enum class ViewEventType { FELLOW_UPDATE, MESSAGE, SEND_TIMEO, }; class ViewEvent { public: virtual ~ViewEvent(){} public: decltype(Post::now()) when = Post::now(); ViewEventType what; }; class FellowViewEvent : public ViewEvent { public: FellowViewEvent(){ what = ViewEventType::FELLOW_UPDATE; } shared_ptr fellow; }; class SendTimeoEvent : public FellowViewEvent { public: SendTimeoEvent(){ what = ViewEventType::SEND_TIMEO; } shared_ptr content; }; class MessageViewEvent : public FellowViewEvent { public: MessageViewEvent(){ what = ViewEventType::MESSAGE; } vector> contents; }; class IFeiqView : public IFileTaskObserver { public: virtual ~IFeiqView(){} virtual void onEvent(shared_ptr event) = 0; }; #endif // IFEIQVIEW_H