summaryrefslogtreecommitdiffhomepage
path: root/NetEx/HttpServlet.h
blob: aedfb093fb159506c9b10585f08620e5203dc95d (plain)
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*  Starshatter: The Open Source Project
    Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors
    Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors
    Copyright (c) 1997-2006, Destroyer Studios LLC.

     AUTHOR:       John DiCamillo


     OVERVIEW
     ========
     Network Server Pump for HTTP Server
*/


#ifndef HttpServlet_h
#define HttpServlet_h

#include "HttpServer.h"

// +-------------------------------------------------------------------+

class HttpServlet;
class HttpSession;

// +-------------------------------------------------------------------+

class HttpServlet
{
public:
    static const char* TYPENAME() { return "HttpServlet"; }

    HttpServlet();
    virtual ~HttpServlet();

    virtual bool      Service(HttpRequest& request, HttpResponse& response);

    virtual bool      DoGet(HttpRequest& request,  HttpResponse& response);
    virtual bool      DoPost(HttpRequest& request, HttpResponse& response);
    virtual bool      DoHead(HttpRequest& request, HttpResponse& response);

    virtual HttpSession* GetSession()               { return session; }
    virtual void         SetSession(HttpSession* s) { session = s; }

protected:
    HttpSession*      session;
};

// +-------------------------------------------------------------------+

class HttpSession
{
public:
    static const char* TYPENAME() { return "HttpSession"; }

    HttpSession();
    virtual ~HttpSession();

    int operator == (const HttpSession& s) const { return id == s.id; }

    Text              GenerateUniqueID();

    Text              GetID()              const { return id;         }
    void              SetID(const char* i)       { id = i;            }
    int               GetLastAccess()      const { return access_time;}
    void              Access();

    List<HttpParam>&  GetAttributes()            { return attributes; }

    Text              GetAttribute(const char* name);
    void              SetAttribute(const char* name, const char* value);
    void              DelAttribute(const char* name);

    int               GetIntAttribute(const char* name);
    void              SetIntAttribute(const char* name, int value);
    void              DelIntAttribute(const char* name);

protected:
    Text              id;
    int               access_time;
    List<HttpParam>   attributes;
};


#endif  // HttpServlet_h