Browse Source

* Implemented TCustomHTTPModule.Kind: wkPooled, wkOneShot

git-svn-id: trunk@14489 -
joost 15 years ago
parent
commit
1e3a429367
3 changed files with 11 additions and 4 deletions
  1. 3 1
      packages/fcl-web/src/custweb.pp
  2. 7 0
      packages/fcl-web/src/fphttp.pp
  3. 1 3
      packages/fcl-web/src/fpweb.pp

+ 3 - 1
packages/fcl-web/src/custweb.pp

@@ -251,6 +251,8 @@ begin
     If (M=Nil) then
       M:=MC.Create(Self);
     M.HandleRequest(ARequest,AResponse);
+    if M.Kind=wkOneShot then
+      M.Free;
   except
     On E : Exception do
       begin
@@ -294,7 +296,7 @@ Var
   I : Integer;
 begin
   I:=ComponentCount-1;
-  While (I>=0) and (Not (Components[i] is ModuleClass)) do
+  While (I>=0) and (Not ((Components[i] is ModuleClass) and (TCustomHTTPModule(Components[i]).Kind<>wkOneShot))) do
     Dec(i);
   if (I>=0) then
     Result:=Components[i] as TCustomHTTPModule

+ 7 - 0
packages/fcl-web/src/fphttp.pp

@@ -20,6 +20,8 @@ Interface
 uses sysutils,classes,httpdefs;
 
 Type
+{ TODO : Implement wkSession }
+  TWebModuleKind = (wkPooled, wkOneShot{, wkSession});
 
   { THTTPContentProducer }
   TWebActionEvent = Procedure (Sender : TObject;
@@ -96,9 +98,14 @@ Type
     Property DefActionWhenUnknown : Boolean read FDefActionWhenUnknown write FDefActionWhenUnknown;
   end;
   
+  { TCustomHTTPModule }
+
   TCustomHTTPModule = Class(TDataModule)
+  private
+    FWebModuleKind: TWebModuleKind;
   public
     Procedure HandleRequest(ARequest : TRequest; AResponse : TResponse); virtual; abstract;
+    property Kind: TWebModuleKind read FWebModuleKind write FWebModuleKind default wkOneShot;
   end;
   
   TCustomHTTPModuleClass = Class of TCustomHTTPModule;

+ 1 - 3
packages/fcl-web/src/fpweb.pp

@@ -150,6 +150,7 @@ Type
     Property DefActionWhenUnknown;
     Property CreateSession;
     Property Session;
+    property Kind;
     Property OnNewSession;
     Property OnSessionExpired;
   end;
@@ -469,9 +470,6 @@ begin
 {$endif cgidebug}
 end;
 
-
-
-
 { TTemplateVar }
 
 procedure TTemplateVar.Assign(Source: TPersistent);