* Added support for modules that do not have a stream associated with them; they are created with CreateNew

git-svn-id: trunk@15565 -
This commit is contained in:
michael 2010-07-14 14:26:09 +00:00
parent 7e2f713d09
commit 614d5e4858
2 changed files with 11 additions and 5 deletions

View File

@ -264,7 +264,10 @@ begin
end; end;
M:=FindModule(MC); // Check if a module exists already M:=FindModule(MC); // Check if a module exists already
If (M=Nil) then If (M=Nil) then
M:=MC.Create(Self); if Mi.SkipStreaming then
M:=MC.CreateNew(Self)
else
M:=MC.Create(Self);
SetBaseURL(M,MN,ARequest); SetBaseURL(M,MN,ARequest);
if M.Kind=wkOneShot then if M.Kind=wkOneShot then
begin begin

View File

@ -120,9 +120,11 @@ Type
private private
FModuleClass: TCustomHTTPModuleClass; FModuleClass: TCustomHTTPModuleClass;
FModuleName: String; FModuleName: String;
FSkipStreaming: Boolean;
Public Public
Property ModuleClass : TCustomHTTPModuleClass Read FModuleClass Write FModuleClass; Property ModuleClass : TCustomHTTPModuleClass Read FModuleClass Write FModuleClass;
Property ModuleName : String Read FModuleName Write FModuleName; Property ModuleName : String Read FModuleName Write FModuleName;
Property SkipStreaming : Boolean Read FSkipStreaming Write FSkipStreaming;
end; end;
{ TModuleFactory } { TModuleFactory }
@ -140,8 +142,8 @@ Type
EFPHTTPError = Class(Exception); EFPHTTPError = Class(Exception);
Procedure RegisterHTTPModule(ModuleClass : TCustomHTTPModuleClass); Procedure RegisterHTTPModule(ModuleClass : TCustomHTTPModuleClass; SkipStreaming : Boolean = False);
Procedure RegisterHTTPModule(Const ModuleName : String; ModuleClass : TCustomHTTPModuleClass); Procedure RegisterHTTPModule(Const ModuleName : String; ModuleClass : TCustomHTTPModuleClass; SkipStreaming : Boolean = False);
Var Var
ModuleFactory : TModuleFactory; ModuleFactory : TModuleFactory;
@ -202,13 +204,13 @@ begin
end; end;
procedure RegisterHTTPModule(ModuleClass: TCustomHTTPModuleClass); procedure RegisterHTTPModule(ModuleClass: TCustomHTTPModuleClass; SkipStreaming : Boolean = False);
begin begin
RegisterHTTPModule(ModuleClass.ClassName,ModuleClass); RegisterHTTPModule(ModuleClass.ClassName,ModuleClass);
end; end;
procedure RegisterHTTPModule(const ModuleName: String; procedure RegisterHTTPModule(const ModuleName: String;
ModuleClass: TCustomHTTPModuleClass); ModuleClass: TCustomHTTPModuleClass; SkipStreaming : Boolean = False);
Var Var
I : Integer; I : Integer;
@ -224,6 +226,7 @@ begin
else else
MI:=ModuleFactory[I]; MI:=ModuleFactory[I];
MI.ModuleClass:=ModuleClass; MI.ModuleClass:=ModuleClass;
MI.SkipStreaming:=SkipStreaming;
end; end;
{ THTTPContentProducer } { THTTPContentProducer }