r5315: *** empty log message ***
[wol.git] / classes.lisp
1 ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10; Package: wol -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
4 ;;;;
5 ;;;; Name:          classes.lisp
6 ;;;; Purpose:       Classes for Wol library
7 ;;;; Programmer:    Kevin M. Rosenberg
8 ;;;; Date Started:  July 2003
9 ;;;;
10 ;;;; $Id: classes.lisp,v 1.1 2003/07/16 16:02:21 kevin Exp $
11 ;;;;
12 ;;;; This file and Wol are Copyright (c) 2001-2003 by Kevin M. Rosenberg
13 ;;;; *************************************************************************
14
15 (in-package #:wol)
16
17
18 (defclass session-master ()
19   ((lifetime :initarg lifetime :initform nil :accessor lifetime)
20    (cookie-name :initarg cookie-name :accessor cookie-name)
21    (counter :initform 0 :accessor counter)
22    (prefix :initform "/" :accessor prefix)
23    (sessions :initform nil :accessor sessions)))
24    
25
26 (defclass websession ()
27   ((key :initarg :key :accessor websession-key)
28    (lastref :initarg :lastref :accessor websession-lastref)
29    (data :initform nil :accessor websession-data)
30    (method :initarg :method :accessor websession-method)
31    (variables :initform (make-hash-table :test 'equal)
32               :accessor websession-variables)))
33    
34 (defclass wol-project ()
35   ((name :initarg :name :initform "" :type string :accessor project-name)
36    (project-prefix :initarg :project-prefix :type string
37                    :initform "/" :accessor project-prefix)
38    (map :initarg :map :initform nil :type list :accessor project-map)
39    (hash :initarg :hash :initform nil :accessor project-hash-map)
40    (index :initarg :index :initform "index" :type string 
41           :accessor project-index)
42    (server :initarg :server :initform nil :accessor project-server)
43    (session-master :initform (make-instance 'session-master)
44                    :accessor session-master)))
45
46 (defclass entity ()
47   ((project :initarg :project :accessor entity-project))
48   )
49
50 (defclass http-request ()
51   ((method  :initarg :method :accessor request-method)
52    (uri  :initarg :uri :accessor request-uri)
53    (raw-uri :initarg :raw-uri :accessor request-raw-uri)
54    (protocol :initarg :protocol :reader request-protocol)
55    (protocol-string :initarg :protocol-string :reader request-protocol-string)
56    (socket :initarg :socket :reader request-socket)
57    (ml-server :initarg :ml-server :reader request-ml-server)
58    (vhost :initarg :vhost :accessor request-vhost)
59    (posted-content :initarg :posted-content :accessor request-posted-content)
60    (headers :initarg :headers :accessor request-headers)
61    (project :initarg :project :accessor project)
62    (page :initarg :page :initform nil :accessor request-page)
63    (plist :initarg :plist :initform nil :accessor request-plist)
64    (next-plists :initarg :next-plists :initform nil 
65                 :accessor request-next-plists)
66    (uri-query :initarg :uri-query :initform nil 
67                 :accessor request-uri-query)
68    (query-alist :initarg :query-alist :initform nil 
69                 :accessor request-query-alist)
70    (session :initarg :session :initform nil
71             :accessor websession-from-req)
72    ))
73
74 (defvar *reap-interval* 300)
75 (defvar *reaper-process* nil) 
76
77 (defvar *active-projects* (make-hash-table :test 'equal))
78
79 (defvar +asp-header+ "lsp")
80 (defvar +full-asp-header+ "/lsp")
81
82 (defvar +plist-header+ "/sdata"
83   "string that starts an encoded plist")
84
85 (defvar *wol-version* "0.1.0")