1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#ifndef __ACTION_H__
#define __ACTION_H__
#ifdef __cplusplus
#include <Task.h>
#include <Handle.h>
#include <Variables.h>
#include <Exceptions.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 Task * 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
|