summaryrefslogtreecommitdiffhomepage
path: root/NetEx/HttpServlet.h
blob: 99ac06de88336588c4c5b5f69a1cdcb34cb2dd63 (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
85
/*  Project nGenEx
    Destroyer Studios LLC
    Copyright © 1997-2004. All Rights Reserved.

    SUBSYSTEM:    NetEx.lib
    FILE:         HttpServlet.h
    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