diff options
Diffstat (limited to 'include/Action.h')
-rw-r--r-- | include/Action.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/include/Action.h b/include/Action.h new file mode 100644 index 0000000..e9edf27 --- /dev/null +++ b/include/Action.h @@ -0,0 +1,57 @@ +#ifndef __ACTION_H__ +#define __ACTION_H__ +#ifdef __cplusplus + +#include "Exceptions.h" +#include "Handle.h" +#include "Variables.h" + +/* + * La classe Action defini les actions HTTP possibles. + * Le constructeur indique l'URL de l'action. Si aucune URL n'est specifiee, + * alors une URL aléatoire sera générée. + * + * Lors de la construction d'une Action, elle sera rajoutée dans une liste chaînée + * interne à la classe. De ce fait, la fonction Look4URL recherchera une Action + * associée a une URL donnée en paramètre dans la liste chaînée. Le destructeur + * va remettre en place la liste chaînée. + * + * Les dérivés doivent surcharger la méthode Do, qui recevra les variables transportées + * par l'action (si nous avions une méthode POST juste avant) et le handle d'écriture + * vers le socket HTTP. Ils devront aussi surcharger GetTitle, qui sert à écrire le + * titre de la page HTML dans les méthodes SendHead et SendFoot. Ces deux méthodes sont + * d'ailleurs surchargeables, pour créer de nouvelles skins HTML dans des classes dérivées. + * + * La méthode ShowButton sert à afficher un bouton sur la page. Par défaut, ce bouton reviendra + * vers la page principale. + * + * Une action peut être "temporaire", c'est à dire accessible uniquement une seule fois. + * Dans ce cas, après création, il faut faire appel à la méthode CleanUp, et la méthode + * Do devra terminer par un appel a Accessed, afin de supprimer cette Action. + */ + +class Action : public Base { + public: + Action(const String & = ""); + virtual ~Action(); + Action * Look4URL(const String &); + virtual void Do(Variables *, Handle *) = 0; + virtual void SendHead(Handle *); + virtual void SendFoot(Handle *); + virtual void ShowButton(Handle *, const String & = " Ok ", const String & = "start"); + virtual String GetTitle(void) = 0; + String GetURL(void); + void CleanUp(void); + protected: + void Accessed(void); + private: + static Action * start; + Action * next, * prev; + String URL; + bool hastoclean, accessed; +}; + +#else +#error This only works with a C++ compiler +#endif +#endif |