summaryrefslogtreecommitdiff
path: root/include/Action.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/Action.h')
-rw-r--r--include/Action.h57
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