;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10; Package: wol -*- ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; ;;;; Name: classes.lisp ;;;; Purpose: Classes for Wol library ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: July 2003 ;;;; ;;;; $Id$ ;;;; ;;;; This file and Wol are Copyright (c) 2001-2003 by Kevin M. Rosenberg ;;;; ************************************************************************* (in-package #:wol) (defclass session-master () ((lifetime :initarg lifetime :initform nil :accessor lifetime) (cookie-name :initarg cookie-name :accessor cookie-name) (counter :initform 0 :accessor counter) (prefix :initform "/" :accessor prefix) (sessions :initform nil :accessor sessions))) (defclass websession () ((key :initarg :key :accessor websession-key) (lastref :initarg :lastref :accessor websession-lastref) (lifetime :initarg :lifetime :initform nil :accessor websession-lifetime) (data :initform nil :accessor websession-data) (method :initarg :method :accessor websession-method :initform nil) (variables :initform (make-hash-table :test 'equal) :accessor websession-variables))) (defclass wol-project () ((name :initarg :name :initform "" :type string :accessor project-name) (project-prefix :initarg :project-prefix :type string :initform "/" :accessor project-prefix) (map :initarg :map :initform nil :type list :accessor project-map) (hash :initarg :hash :initform nil :accessor project-hash-map) (index :initarg :index :initform "index" :type string :accessor project-index) (server :initarg :server :initform nil :accessor project-server) (session-master :initform (make-instance 'session-master) :accessor session-master) (connector :initarg :connector :accessor project-connector))) (defclass entity () ((project :initarg :project :accessor entity-project) (generators :initarg :generators :accessor entity-generators :documentation "List of waiting page generators") (aserve-entity :initarg :aserve-entity :initform nil :accessor entity-aserve-entity))) (defclass http-request () ((method :initarg :method :accessor request-method) (uri :initarg :uri :accessor request-uri) (decoded-uri-path :initarg :decoded-uri-path :accessor request-decoded-uri-path) (raw-request :initarg :raw-request :accessor request-raw-request) (raw-uri :initarg :raw-uri :accessor request-raw-uri) (protocol :initarg :protocol :reader request-protocol) (protocol-string :initarg :protocol-string :reader request-protocol-string) (socket :initarg :socket :reader request-socket) (ml-server :initarg :ml-server :reader request-ml-server) (aserve-server :initarg :aserve-server :reader request-aserve-server) (host :initarg :host :accessor request-host) (desired-query :initform nil :accessor request-desired-query :documentation "type of query alist requested") (posted-content :initarg :posted-content :accessor request-posted-content) (headers :initarg :headers :accessor request-headers) (page :initarg :page :initform nil :accessor request-page) (url-plist :initarg :url-plist :initform nil :accessor request-url-plist) (plist :initarg :plist :initform nil :accessor request-plist) (url-next-plists :initarg :url-next-plists :initform nil :accessor request-url-next-plists) (uri-query :initarg :uri-query :initform nil :accessor request-uri-query) (query-alist :initarg :query-alist :initform nil :accessor request-query-alist) (session :initarg :session :initform nil :accessor websession-from-req) (aserve-request :initarg :aserve-request :initform nil :accessor aserve-request) )) (defvar *reap-interval* 300) (defvar *reaper-process* nil) (defvar *active-projects* (make-hash-table :test 'equal)) (eval-when (:compile-toplevel :load-toplevel :execute) (defvar +plist-header+ "sdata" "string that starts an encoded plist")) (defconstant +plist-header-length+ (length +plist-header+)) (defparameter *wol-version* '(0 1 0)) (defvar *wol-stream* nil "The output stream for the current request") (defconstant +length-session-id+ 24) (defvar *req* nil "Current request") (defvar *ent* nil "Current entity")