You've already forked lazarus-ccr
Apache module extension to be a dll/so hosting env
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@278 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -14,7 +14,7 @@
|
|||||||
unit library_base_intf;
|
unit library_base_intf;
|
||||||
|
|
||||||
interface
|
interface
|
||||||
uses base_service_intf;
|
uses SysUtils, Classes, base_service_intf;
|
||||||
|
|
||||||
{$INCLUDE wst.inc}
|
{$INCLUDE wst.inc}
|
||||||
{$INCLUDE wst_delphi.inc}
|
{$INCLUDE wst_delphi.inc}
|
||||||
@ -51,6 +51,30 @@ type
|
|||||||
function SetPosition(const ANewPos : LongWord):LongInt;
|
function SetPosition(const ANewPos : LongWord):LongInt;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TwstStream }
|
||||||
|
|
||||||
|
TwstStream = class(TInterfacedObject,IwstStream)
|
||||||
|
private
|
||||||
|
FStream : TStream;
|
||||||
|
protected
|
||||||
|
function Read(
|
||||||
|
ABuffer : Pointer;
|
||||||
|
const ALenToRead : LongWord;
|
||||||
|
out AReadedLen : LongWord
|
||||||
|
):LongInt;
|
||||||
|
function Write(
|
||||||
|
ABuffer : Pointer;
|
||||||
|
const ALenToWrite : LongWord;
|
||||||
|
out AWrittenLen : LongWord
|
||||||
|
):LongInt;
|
||||||
|
function GetSize(out ASize : LongWord):LongInt;
|
||||||
|
function SetSize(const ANewSize : LongWord):LongInt;
|
||||||
|
function GetPosition(out APos : LongWord):LongWord;
|
||||||
|
function SetPosition(const ANewPos : LongWord):LongInt;
|
||||||
|
public
|
||||||
|
constructor Create(AStream : TStream);
|
||||||
|
end;
|
||||||
|
|
||||||
TwstLibraryHandlerFunction =
|
TwstLibraryHandlerFunction =
|
||||||
function(
|
function(
|
||||||
ARequestBuffer : IwstStream;
|
ARequestBuffer : IwstStream;
|
||||||
@ -85,5 +109,65 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TwstStream }
|
||||||
|
|
||||||
|
function TwstStream.Read(
|
||||||
|
ABuffer : Pointer;
|
||||||
|
const ALenToRead : LongWord;
|
||||||
|
out AReadedLen : LongWord
|
||||||
|
): LongInt;
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
AReadedLen := FStream.Read(ABuffer^,ALenToRead);
|
||||||
|
Result := RET_OK;
|
||||||
|
except
|
||||||
|
Result := RET_FALSE;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TwstStream.Write(
|
||||||
|
ABuffer : Pointer;
|
||||||
|
const ALenToWrite : LongWord;
|
||||||
|
out AWrittenLen : LongWord
|
||||||
|
): LongInt;
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
AWrittenLen := FStream.Write(ABuffer^,ALenToWrite);
|
||||||
|
Result := RET_OK;
|
||||||
|
except
|
||||||
|
Result := RET_FALSE;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TwstStream.GetSize(out ASize: LongWord): LongInt;
|
||||||
|
begin
|
||||||
|
ASize := FStream.Size;
|
||||||
|
Result := RET_OK;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TwstStream.SetSize(const ANewSize: LongWord): LongInt;
|
||||||
|
begin
|
||||||
|
FStream.Size := ANewSize;
|
||||||
|
Result := RET_OK;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TwstStream.GetPosition(out APos: LongWord): LongWord;
|
||||||
|
begin
|
||||||
|
APos := FStream.Position;
|
||||||
|
Result := RET_OK;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TwstStream.SetPosition(const ANewPos: LongWord): LongInt;
|
||||||
|
begin
|
||||||
|
FStream.Position := ANewPos;
|
||||||
|
Result := RET_OK;
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TwstStream.Create(AStream: TStream);
|
||||||
|
begin
|
||||||
|
Assert(Assigned(AStream));
|
||||||
|
FStream := AStream;
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -16,13 +16,28 @@ unit library_imp_utils;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils;
|
Classes, SysUtils
|
||||||
|
{$IFDEF FPC}
|
||||||
|
, DynLibs
|
||||||
|
{$ELSE}
|
||||||
|
, Windows
|
||||||
|
{$ENDIF}
|
||||||
|
;
|
||||||
|
|
||||||
{$INCLUDE wst.inc}
|
{$INCLUDE wst.inc}
|
||||||
{$INCLUDE wst_delphi.inc}
|
{$INCLUDE wst_delphi.inc}
|
||||||
|
|
||||||
|
{$IFNDEF FPC}
|
||||||
|
const
|
||||||
|
NilHandle = 0;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
|
{$IFNDEF FPC}
|
||||||
|
TLibHandle = Longint;
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
IwstModule = interface
|
IwstModule = interface
|
||||||
['{A62A9A71-727E-47AD-9B84-0F7CA0AE51D5}']
|
['{A62A9A71-727E-47AD-9B84-0F7CA0AE51D5}']
|
||||||
function GetFileName():string;
|
function GetFileName():string;
|
||||||
@ -33,61 +48,57 @@ type
|
|||||||
['{0A49D315-FF3E-40CD-BCA0-F958BCD5C57F}']
|
['{0A49D315-FF3E-40CD-BCA0-F958BCD5C57F}']
|
||||||
function Get(const AFileName : string):IwstModule;
|
function Get(const AFileName : string):IwstModule;
|
||||||
procedure Clear();
|
procedure Clear();
|
||||||
|
function GetCount() : PtrInt;
|
||||||
|
function GetItem(const AIndex : PtrInt) : IwstModule;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
|
||||||
LibraryManager : IwstModuleManager = nil;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
{$IFDEF FPC}
|
|
||||||
uses DynLibs;
|
|
||||||
{$ELSE}
|
|
||||||
uses Windows;
|
|
||||||
|
|
||||||
type TLibHandle = THandle;
|
|
||||||
const NilHandle = 0;
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
|
|
||||||
type
|
|
||||||
|
|
||||||
{ TwstModule }
|
{ TwstModule }
|
||||||
|
|
||||||
TwstModule = class(TInterfacedObject,IwstModule)
|
TwstModule = class(TInterfacedObject,IwstModule)
|
||||||
private
|
private
|
||||||
FFileName : string;
|
FFileName : string;
|
||||||
FHandle : TLibHandle;
|
FHandle : TLibHandle;
|
||||||
private
|
|
||||||
procedure Load(const ADoLoad : Boolean);
|
|
||||||
protected
|
protected
|
||||||
function GetFileName():string;
|
function GetFileName():string;
|
||||||
function GetProc(const AProcName : string):Pointer;
|
function GetProc(const AProcName : string):Pointer;
|
||||||
|
procedure Load(const ADoLoad : Boolean);virtual;
|
||||||
public
|
public
|
||||||
constructor Create(const AFileName : string);
|
constructor Create(const AFileName : string);virtual;
|
||||||
destructor Destroy();override;
|
destructor Destroy();override;
|
||||||
end;
|
end;
|
||||||
|
TwstModuleClass = class of TwstModule;
|
||||||
|
|
||||||
{ TwstModuleManager }
|
{ TwstModuleManager }
|
||||||
|
|
||||||
TwstModuleManager = class(TInterfacedObject,IwstModuleManager)
|
TwstModuleManager = class(TInterfacedObject,IwstModuleManager)
|
||||||
private
|
private
|
||||||
FList : IInterfaceList;
|
FList : IInterfaceList;
|
||||||
|
FItemClass : TwstModuleClass;
|
||||||
private
|
private
|
||||||
function Load(const AFileName : string):IwstModule;
|
function Load(const AFileName : string):IwstModule;
|
||||||
function GetItem(const AIndex : Integer):IwstModule;
|
|
||||||
function IndexOf(const AFileName : string):Integer;
|
function IndexOf(const AFileName : string):Integer;
|
||||||
protected
|
protected
|
||||||
function Get(const AFileName : string):IwstModule;
|
function Get(const AFileName : string):IwstModule;
|
||||||
procedure Clear();
|
procedure Clear();
|
||||||
|
function GetCount() : PtrInt;
|
||||||
|
function GetItem(const AIndex : PtrInt) : IwstModule;
|
||||||
public
|
public
|
||||||
constructor Create();
|
constructor Create(AItemClass : TwstModuleClass);
|
||||||
destructor Destroy();override;
|
destructor Destroy();override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
LibraryManager : IwstModuleManager = nil;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
|
||||||
procedure TwstModule.Load(const ADoLoad : Boolean);
|
procedure TwstModule.Load(const ADoLoad : Boolean);
|
||||||
begin
|
begin
|
||||||
if ADoLoad then begin
|
if ADoLoad then begin
|
||||||
if ( FHandle = NilHandle ) then begin
|
if ( FHandle = NilHandle ) then begin
|
||||||
|
if not FileExists(FFileName) then
|
||||||
|
raise Exception.CreateFmt('File not found : "%s".',[FFileName]);
|
||||||
{$IFDEF FPC}
|
{$IFDEF FPC}
|
||||||
FHandle := LoadLibrary(FFileName);
|
FHandle := LoadLibrary(FFileName);
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
@ -122,8 +133,6 @@ end;
|
|||||||
|
|
||||||
constructor TwstModule.Create(const AFileName: string);
|
constructor TwstModule.Create(const AFileName: string);
|
||||||
begin
|
begin
|
||||||
if not FileExists(AFileName) then
|
|
||||||
raise Exception.CreateFmt('File not found : "%s".',[AFileName]);
|
|
||||||
FHandle := NilHandle;
|
FHandle := NilHandle;
|
||||||
FFileName := AFileName;
|
FFileName := AFileName;
|
||||||
Load(True);
|
Load(True);
|
||||||
@ -142,27 +151,44 @@ var
|
|||||||
i : Integer;
|
i : Integer;
|
||||||
begin
|
begin
|
||||||
i := IndexOf(AFileName);
|
i := IndexOf(AFileName);
|
||||||
if ( i < 0 ) then
|
if ( i < 0 ) then begin
|
||||||
Result := Load(AFileName)
|
FList.Lock();
|
||||||
else
|
try
|
||||||
|
i := IndexOf(AFileName);
|
||||||
|
if ( i < 0 ) then begin
|
||||||
|
Result := Load(AFileName);
|
||||||
|
FList.Add(Result);
|
||||||
|
end else begin
|
||||||
|
Result := GetItem(i);;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
FList.Unlock();
|
||||||
|
end;
|
||||||
|
end else begin
|
||||||
Result := GetItem(i);
|
Result := GetItem(i);
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TwstModuleManager.Clear();
|
procedure TwstModuleManager.Clear();
|
||||||
begin
|
begin
|
||||||
FList.Clear();
|
FList.Clear();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TwstModuleManager.Load(const AFileName: string): IwstModule;
|
function TwstModuleManager.GetCount(): PtrInt;
|
||||||
begin
|
begin
|
||||||
Result := TwstModule.Create(AFileName);
|
Result := FList.Count;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TwstModuleManager.GetItem(const AIndex: Integer): IwstModule;
|
function TwstModuleManager.GetItem(const AIndex: PtrInt): IwstModule;
|
||||||
begin
|
begin
|
||||||
Result := FList[AIndex] as IwstModule;
|
Result := FList[AIndex] as IwstModule;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TwstModuleManager.Load(const AFileName: string): IwstModule;
|
||||||
|
begin
|
||||||
|
Result := FItemClass.Create(AFileName);
|
||||||
|
end;
|
||||||
|
|
||||||
function TwstModuleManager.IndexOf(const AFileName: string): Integer;
|
function TwstModuleManager.IndexOf(const AFileName: string): Integer;
|
||||||
begin
|
begin
|
||||||
for Result := 0 to Pred(FList.Count) do begin
|
for Result := 0 to Pred(FList.Count) do begin
|
||||||
@ -172,9 +198,11 @@ begin
|
|||||||
Result := -1;
|
Result := -1;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TwstModuleManager.Create();
|
constructor TwstModuleManager.Create(AItemClass : TwstModuleClass);
|
||||||
begin
|
begin
|
||||||
inherited;
|
Assert(Assigned(AItemClass));
|
||||||
|
inherited Create();
|
||||||
|
FItemClass := AItemClass;
|
||||||
FList := TInterfaceList.Create();
|
FList := TInterfaceList.Create();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -186,7 +214,7 @@ end;
|
|||||||
|
|
||||||
procedure InitLibraryManager();
|
procedure InitLibraryManager();
|
||||||
begin
|
begin
|
||||||
LibraryManager := TwstModuleManager.Create();
|
LibraryManager := TwstModuleManager.Create(TwstModule);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
|
@ -60,92 +60,6 @@ Type
|
|||||||
implementation
|
implementation
|
||||||
uses binary_streamer;
|
uses binary_streamer;
|
||||||
|
|
||||||
type
|
|
||||||
|
|
||||||
{ TwstStream }
|
|
||||||
|
|
||||||
TwstStream = class(TInterfacedObject,IwstStream)
|
|
||||||
private
|
|
||||||
FStream : TStream;
|
|
||||||
protected
|
|
||||||
function Read(
|
|
||||||
ABuffer : Pointer;
|
|
||||||
const ALenToRead : LongWord;
|
|
||||||
out AReadedLen : LongWord
|
|
||||||
):LongInt;
|
|
||||||
function Write(
|
|
||||||
ABuffer : Pointer;
|
|
||||||
const ALenToWrite : LongWord;
|
|
||||||
out AWrittenLen : LongWord
|
|
||||||
):LongInt;
|
|
||||||
function GetSize(out ASize : LongWord):LongInt;
|
|
||||||
function SetSize(const ANewSize : LongWord):LongInt;
|
|
||||||
function GetPosition(out APos : LongWord):LongWord;
|
|
||||||
function SetPosition(const ANewPos : LongWord):LongInt;
|
|
||||||
public
|
|
||||||
constructor Create(AStream : TStream);
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TwstStream }
|
|
||||||
|
|
||||||
function TwstStream.Read(
|
|
||||||
ABuffer : Pointer;
|
|
||||||
const ALenToRead : LongWord;
|
|
||||||
out AReadedLen : LongWord
|
|
||||||
): LongInt;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
AReadedLen := FStream.Read(ABuffer^,ALenToRead);
|
|
||||||
Result := RET_OK;
|
|
||||||
except
|
|
||||||
Result := RET_FALSE;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TwstStream.Write(
|
|
||||||
ABuffer : Pointer;
|
|
||||||
const ALenToWrite : LongWord;
|
|
||||||
out AWrittenLen : LongWord
|
|
||||||
): LongInt;
|
|
||||||
begin
|
|
||||||
try
|
|
||||||
AWrittenLen := FStream.Write(ABuffer^,ALenToWrite);
|
|
||||||
Result := RET_OK;
|
|
||||||
except
|
|
||||||
Result := RET_FALSE;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TwstStream.GetSize(out ASize: LongWord): LongInt;
|
|
||||||
begin
|
|
||||||
ASize := FStream.Size;
|
|
||||||
Result := RET_OK;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TwstStream.SetSize(const ANewSize: LongWord): LongInt;
|
|
||||||
begin
|
|
||||||
FStream.Size := ANewSize;
|
|
||||||
Result := RET_OK;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TwstStream.GetPosition(out APos: LongWord): LongWord;
|
|
||||||
begin
|
|
||||||
APos := FStream.Position;
|
|
||||||
Result := RET_OK;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TwstStream.SetPosition(const ANewPos: LongWord): LongInt;
|
|
||||||
begin
|
|
||||||
FStream.Position := ANewPos;
|
|
||||||
Result := RET_OK;
|
|
||||||
end;
|
|
||||||
|
|
||||||
constructor TwstStream.Create(AStream: TStream);
|
|
||||||
begin
|
|
||||||
Assert(Assigned(AStream));
|
|
||||||
FStream := AStream;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TLIBTransport }
|
{ TLIBTransport }
|
||||||
|
|
||||||
procedure TLIBTransport.SetFileName(const AValue: string);
|
procedure TLIBTransport.SetFileName(const AValue: string);
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<MainUnit Value="0"/>
|
<MainUnit Value="0"/>
|
||||||
<IconPath Value="./"/>
|
<IconPath Value="./"/>
|
||||||
<TargetFileExt Value=".exe"/>
|
<TargetFileExt Value=".exe"/>
|
||||||
<ActiveEditorIndexAtStart Value="0"/>
|
<ActiveEditorIndexAtStart Value="3"/>
|
||||||
</General>
|
</General>
|
||||||
<VersionInfo>
|
<VersionInfo>
|
||||||
<ProjectVersion Value=""/>
|
<ProjectVersion Value=""/>
|
||||||
@ -24,121 +24,482 @@
|
|||||||
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
|
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
|
||||||
</local>
|
</local>
|
||||||
</RunParams>
|
</RunParams>
|
||||||
<Units Count="14">
|
<Units Count="56">
|
||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="mod_wst.lpr"/>
|
<Filename Value="mod_wst.lpr"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="mod_wst"/>
|
<UnitName Value="mod_wst"/>
|
||||||
<CursorPos X="3" Y="11"/>
|
<CursorPos X="38" Y="11"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="0"/>
|
<EditorIndex Value="0"/>
|
||||||
<UsageCount Value="36"/>
|
<UsageCount Value="68"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit0>
|
</Unit0>
|
||||||
<Unit1>
|
<Unit1>
|
||||||
<Filename Value="wst_apache_binding.pas"/>
|
<Filename Value="wst_apache_binding.pas"/>
|
||||||
<UnitName Value="wst_apache_binding"/>
|
<UnitName Value="wst_apache_binding"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="19" Y="74"/>
|
||||||
<TopLine Value="249"/>
|
<TopLine Value="70"/>
|
||||||
<EditorIndex Value="4"/>
|
<EditorIndex Value="1"/>
|
||||||
<UsageCount Value="18"/>
|
<UsageCount Value="33"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit1>
|
</Unit1>
|
||||||
<Unit2>
|
<Unit2>
|
||||||
<Filename Value="..\..\metadata_wsdl.pas"/>
|
<Filename Value="..\..\metadata_wsdl.pas"/>
|
||||||
<UnitName Value="metadata_wsdl"/>
|
<UnitName Value="metadata_wsdl"/>
|
||||||
<CursorPos X="70" Y="30"/>
|
<CursorPos X="5" Y="82"/>
|
||||||
<TopLine Value="16"/>
|
<TopLine Value="67"/>
|
||||||
<EditorIndex Value="8"/>
|
<UsageCount Value="33"/>
|
||||||
<UsageCount Value="18"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit2>
|
</Unit2>
|
||||||
<Unit3>
|
<Unit3>
|
||||||
<Filename Value="..\user_service_intf_imp.pas"/>
|
<Filename Value="..\user_service_intf_imp.pas"/>
|
||||||
<UnitName Value="user_service_intf_imp"/>
|
<UnitName Value="user_service_intf_imp"/>
|
||||||
<CursorPos X="71" Y="20"/>
|
<CursorPos X="8" Y="225"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="191"/>
|
||||||
<EditorIndex Value="9"/>
|
<UsageCount Value="21"/>
|
||||||
<UsageCount Value="18"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit3>
|
</Unit3>
|
||||||
<Unit4>
|
<Unit4>
|
||||||
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-1.3\httpd.pas"/>
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-1.3\httpd.pas"/>
|
||||||
<UnitName Value="httpd"/>
|
<UnitName Value="httpd"/>
|
||||||
<CursorPos X="5" Y="26"/>
|
<CursorPos X="5" Y="26"/>
|
||||||
<TopLine Value="25"/>
|
<TopLine Value="25"/>
|
||||||
<UsageCount Value="9"/>
|
<UsageCount Value="6"/>
|
||||||
</Unit4>
|
</Unit4>
|
||||||
<Unit5>
|
<Unit5>
|
||||||
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-1.3\httpd.inc"/>
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-1.3\httpd.inc"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="75"/>
|
<TopLine Value="75"/>
|
||||||
<UsageCount Value="9"/>
|
<UsageCount Value="6"/>
|
||||||
</Unit5>
|
</Unit5>
|
||||||
<Unit6>
|
<Unit6>
|
||||||
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\httpd.pas"/>
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\httpd.pas"/>
|
||||||
<UnitName Value="httpd"/>
|
<UnitName Value="httpd"/>
|
||||||
<CursorPos X="35" Y="44"/>
|
<CursorPos X="35" Y="44"/>
|
||||||
<TopLine Value="61"/>
|
<TopLine Value="61"/>
|
||||||
<UsageCount Value="9"/>
|
<UsageCount Value="6"/>
|
||||||
</Unit6>
|
</Unit6>
|
||||||
<Unit7>
|
<Unit7>
|
||||||
<Filename Value="..\..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\http_protocol.inc"/>
|
<Filename Value="..\..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\http_protocol.inc"/>
|
||||||
<CursorPos X="47" Y="799"/>
|
<CursorPos X="47" Y="799"/>
|
||||||
<TopLine Value="777"/>
|
<TopLine Value="777"/>
|
||||||
<EditorIndex Value="7"/>
|
<UsageCount Value="9"/>
|
||||||
<UsageCount Value="12"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit7>
|
</Unit7>
|
||||||
<Unit8>
|
<Unit8>
|
||||||
<Filename Value="..\..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\httpd.inc"/>
|
<Filename Value="..\..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\httpd.inc"/>
|
||||||
<CursorPos X="5" Y="794"/>
|
<CursorPos X="5" Y="794"/>
|
||||||
<TopLine Value="777"/>
|
<TopLine Value="777"/>
|
||||||
<EditorIndex Value="6"/>
|
<UsageCount Value="8"/>
|
||||||
<UsageCount Value="11"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit8>
|
</Unit8>
|
||||||
<Unit9>
|
<Unit9>
|
||||||
<Filename Value="..\..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-2.0\apr\apr_tables.inc"/>
|
<Filename Value="..\..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-2.0\apr\apr_tables.inc"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="16"/>
|
<TopLine Value="16"/>
|
||||||
<EditorIndex Value="5"/>
|
<UsageCount Value="8"/>
|
||||||
<UsageCount Value="11"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit9>
|
</Unit9>
|
||||||
<Unit10>
|
<Unit10>
|
||||||
<Filename Value="..\..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\http_config.inc"/>
|
<Filename Value="..\..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\http_config.inc"/>
|
||||||
<CursorPos X="71" Y="66"/>
|
<CursorPos X="71" Y="66"/>
|
||||||
<TopLine Value="32"/>
|
<TopLine Value="32"/>
|
||||||
<EditorIndex Value="1"/>
|
<UsageCount Value="8"/>
|
||||||
<UsageCount Value="11"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit10>
|
</Unit10>
|
||||||
<Unit11>
|
<Unit11>
|
||||||
<Filename Value="..\..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\httpd.pas"/>
|
<Filename Value="..\..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\httpd.pas"/>
|
||||||
<UnitName Value="httpd"/>
|
<UnitName Value="httpd"/>
|
||||||
<CursorPos X="41" Y="134"/>
|
<CursorPos X="41" Y="134"/>
|
||||||
<TopLine Value="117"/>
|
<TopLine Value="117"/>
|
||||||
<EditorIndex Value="2"/>
|
<UsageCount Value="8"/>
|
||||||
<UsageCount Value="11"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit11>
|
</Unit11>
|
||||||
<Unit12>
|
<Unit12>
|
||||||
<Filename Value="..\..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\ap_mmn.inc"/>
|
<Filename Value="..\..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\ap_mmn.inc"/>
|
||||||
<CursorPos X="3" Y="111"/>
|
<CursorPos X="3" Y="111"/>
|
||||||
<TopLine Value="96"/>
|
<TopLine Value="96"/>
|
||||||
<EditorIndex Value="3"/>
|
<UsageCount Value="8"/>
|
||||||
<UsageCount Value="11"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit12>
|
</Unit12>
|
||||||
<Unit13>
|
<Unit13>
|
||||||
<Filename Value="..\..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-2.0\apr\apr_pools.inc"/>
|
<Filename Value="..\..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\base\httpd\httpd-2.0\apr\apr_pools.inc"/>
|
||||||
<CursorPos X="3" Y="48"/>
|
<CursorPos X="3" Y="48"/>
|
||||||
<TopLine Value="678"/>
|
<TopLine Value="678"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="7"/>
|
||||||
</Unit13>
|
</Unit13>
|
||||||
|
<Unit14>
|
||||||
|
<Filename Value="..\..\wst_rtti_filter\cursor_intf.pas"/>
|
||||||
|
<UnitName Value="cursor_intf"/>
|
||||||
|
<CursorPos X="16" Y="18"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit14>
|
||||||
|
<Unit15>
|
||||||
|
<Filename Value="..\user_service_intf_binder.pas"/>
|
||||||
|
<UnitName Value="user_service_intf_binder"/>
|
||||||
|
<CursorPos X="3" Y="252"/>
|
||||||
|
<TopLine Value="250"/>
|
||||||
|
<UsageCount Value="13"/>
|
||||||
|
</Unit15>
|
||||||
|
<Unit16>
|
||||||
|
<Filename Value="..\imp_helper.pas"/>
|
||||||
|
<UnitName Value="imp_helper"/>
|
||||||
|
<CursorPos X="1" Y="76"/>
|
||||||
|
<TopLine Value="33"/>
|
||||||
|
<UsageCount Value="20"/>
|
||||||
|
</Unit16>
|
||||||
|
<Unit17>
|
||||||
|
<Filename Value="..\..\metadata_service_binder.pas"/>
|
||||||
|
<UnitName Value="metadata_service_binder"/>
|
||||||
|
<CursorPos X="29" Y="43"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<UsageCount Value="25"/>
|
||||||
|
</Unit17>
|
||||||
|
<Unit18>
|
||||||
|
<Filename Value="..\..\metadata_service.pas"/>
|
||||||
|
<UnitName Value="metadata_service"/>
|
||||||
|
<CursorPos X="71" Y="76"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<UsageCount Value="25"/>
|
||||||
|
</Unit18>
|
||||||
|
<Unit19>
|
||||||
|
<Filename Value="..\..\metadata_service_imp.pas"/>
|
||||||
|
<UnitName Value="metadata_service_imp"/>
|
||||||
|
<CursorPos X="61" Y="21"/>
|
||||||
|
<TopLine Value="13"/>
|
||||||
|
<UsageCount Value="24"/>
|
||||||
|
</Unit19>
|
||||||
|
<Unit20>
|
||||||
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
|
<UnitName Value="library_imp_utils"/>
|
||||||
|
<CursorPos X="42" Y="35"/>
|
||||||
|
<TopLine Value="73"/>
|
||||||
|
<EditorIndex Value="7"/>
|
||||||
|
<UsageCount Value="24"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit20>
|
||||||
|
<Unit21>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-2.0\apr\apr.pas"/>
|
||||||
|
<UnitName Value="apr"/>
|
||||||
|
<CursorPos X="18" Y="182"/>
|
||||||
|
<TopLine Value="173"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit21>
|
||||||
|
<Unit22>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-2.0\apr\apr_file_info.inc"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="151"/>
|
||||||
|
<UsageCount Value="7"/>
|
||||||
|
</Unit22>
|
||||||
|
<Unit23>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-2.0\apr\apr_file_io.inc"/>
|
||||||
|
<CursorPos X="124" Y="665"/>
|
||||||
|
<TopLine Value="778"/>
|
||||||
|
<UsageCount Value="7"/>
|
||||||
|
</Unit23>
|
||||||
|
<Unit24>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-2.0\apr\apr_dso.inc"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="66"/>
|
||||||
|
<UsageCount Value="7"/>
|
||||||
|
</Unit24>
|
||||||
|
<Unit25>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-2.0\apr\apr_lib.inc"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="192"/>
|
||||||
|
<UsageCount Value="7"/>
|
||||||
|
</Unit25>
|
||||||
|
<Unit26>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-2.0\apr\apr_general.inc"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="199"/>
|
||||||
|
<UsageCount Value="7"/>
|
||||||
|
</Unit26>
|
||||||
|
<Unit27>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-2.0\apr\apr_strings.inc"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="329"/>
|
||||||
|
<UsageCount Value="7"/>
|
||||||
|
</Unit27>
|
||||||
|
<Unit28>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-1.3\httpd.inc"/>
|
||||||
|
<CursorPos X="21" Y="23"/>
|
||||||
|
<TopLine Value="10"/>
|
||||||
|
<UsageCount Value="12"/>
|
||||||
|
</Unit28>
|
||||||
|
<Unit29>
|
||||||
|
<Filename Value="..\..\library_base_intf.pas"/>
|
||||||
|
<UnitName Value="library_base_intf"/>
|
||||||
|
<CursorPos X="29" Y="17"/>
|
||||||
|
<TopLine Value="73"/>
|
||||||
|
<EditorIndex Value="5"/>
|
||||||
|
<UsageCount Value="23"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit29>
|
||||||
|
<Unit30>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-1.3\ap_alloc.inc"/>
|
||||||
|
<CursorPos X="3" Y="45"/>
|
||||||
|
<TopLine Value="30"/>
|
||||||
|
<UsageCount Value="11"/>
|
||||||
|
</Unit30>
|
||||||
|
<Unit31>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-2.0\apr\apr_pools.inc"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="678"/>
|
||||||
|
<UsageCount Value="7"/>
|
||||||
|
</Unit31>
|
||||||
|
<Unit32>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-1.3\httpd.pas"/>
|
||||||
|
<UnitName Value="httpd"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="82"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit32>
|
||||||
|
<Unit33>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-1.3\http_log.inc"/>
|
||||||
|
<CursorPos X="11" Y="75"/>
|
||||||
|
<TopLine Value="60"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit33>
|
||||||
|
<Unit34>
|
||||||
|
<Filename Value="..\..\server_service_xmlrpc.pas"/>
|
||||||
|
<UnitName Value="server_service_xmlrpc"/>
|
||||||
|
<CursorPos X="17" Y="57"/>
|
||||||
|
<TopLine Value="42"/>
|
||||||
|
<UsageCount Value="13"/>
|
||||||
|
</Unit34>
|
||||||
|
<Unit35>
|
||||||
|
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
|
||||||
|
<UnitName Value="base_xmlrpc_formatter"/>
|
||||||
|
<CursorPos X="3" Y="29"/>
|
||||||
|
<TopLine Value="14"/>
|
||||||
|
<UsageCount Value="13"/>
|
||||||
|
</Unit35>
|
||||||
|
<Unit36>
|
||||||
|
<Filename Value="..\..\server_service_intf.pas"/>
|
||||||
|
<UnitName Value="server_service_intf"/>
|
||||||
|
<CursorPos X="5" Y="18"/>
|
||||||
|
<TopLine Value="3"/>
|
||||||
|
<UsageCount Value="21"/>
|
||||||
|
</Unit36>
|
||||||
|
<Unit37>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\rtl\win32\classes.pp"/>
|
||||||
|
<UnitName Value="Classes"/>
|
||||||
|
<CursorPos X="8" Y="46"/>
|
||||||
|
<TopLine Value="21"/>
|
||||||
|
<UsageCount Value="8"/>
|
||||||
|
</Unit37>
|
||||||
|
<Unit38>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\rtl\objpas\classes\classes.inc"/>
|
||||||
|
<CursorPos X="11" Y="1674"/>
|
||||||
|
<TopLine Value="1665"/>
|
||||||
|
<UsageCount Value="8"/>
|
||||||
|
</Unit38>
|
||||||
|
<Unit39>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-1.3\http_config.inc"/>
|
||||||
|
<CursorPos X="24" Y="165"/>
|
||||||
|
<TopLine Value="150"/>
|
||||||
|
<UsageCount Value="8"/>
|
||||||
|
</Unit39>
|
||||||
|
<Unit40>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-2.2\apr\apr_pools.inc"/>
|
||||||
|
<CursorPos X="3" Y="48"/>
|
||||||
|
<TopLine Value="33"/>
|
||||||
|
<UsageCount Value="8"/>
|
||||||
|
</Unit40>
|
||||||
|
<Unit41>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-2.2\http_config.inc"/>
|
||||||
|
<CursorPos X="25" Y="154"/>
|
||||||
|
<TopLine Value="117"/>
|
||||||
|
<UsageCount Value="17"/>
|
||||||
|
</Unit41>
|
||||||
|
<Unit42>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-2.2\httpd.pas"/>
|
||||||
|
<UnitName Value="httpd"/>
|
||||||
|
<CursorPos X="3" Y="70"/>
|
||||||
|
<TopLine Value="55"/>
|
||||||
|
<UsageCount Value="15"/>
|
||||||
|
</Unit42>
|
||||||
|
<Unit43>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-2.2\httpd.inc"/>
|
||||||
|
<CursorPos X="5" Y="1029"/>
|
||||||
|
<TopLine Value="1014"/>
|
||||||
|
<UsageCount Value="11"/>
|
||||||
|
</Unit43>
|
||||||
|
<Unit44>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-2.2\http_log.inc"/>
|
||||||
|
<CursorPos X="15" Y="34"/>
|
||||||
|
<TopLine Value="17"/>
|
||||||
|
<UsageCount Value="11"/>
|
||||||
|
</Unit44>
|
||||||
|
<Unit45>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\base\httpd\httpd-2.0\http_config.inc"/>
|
||||||
|
<CursorPos X="1" Y="136"/>
|
||||||
|
<TopLine Value="113"/>
|
||||||
|
<UsageCount Value="13"/>
|
||||||
|
</Unit45>
|
||||||
|
<Unit46>
|
||||||
|
<Filename Value="..\..\wst.inc"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<UsageCount Value="9"/>
|
||||||
|
</Unit46>
|
||||||
|
<Unit47>
|
||||||
|
<Filename Value="..\..\base_service_intf.pas"/>
|
||||||
|
<UnitName Value="base_service_intf"/>
|
||||||
|
<CursorPos X="25" Y="1252"/>
|
||||||
|
<TopLine Value="1237"/>
|
||||||
|
<EditorIndex Value="6"/>
|
||||||
|
<UsageCount Value="13"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit47>
|
||||||
|
<Unit48>
|
||||||
|
<Filename Value="..\..\imp_utils.pas"/>
|
||||||
|
<UnitName Value="imp_utils"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="38"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit48>
|
||||||
|
<Unit49>
|
||||||
|
<Filename Value="..\..\wst_resources_imp.pas"/>
|
||||||
|
<UnitName Value="wst_resources_imp"/>
|
||||||
|
<CursorPos X="1" Y="1"/>
|
||||||
|
<TopLine Value="13"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit49>
|
||||||
|
<Unit50>
|
||||||
|
<Filename Value="..\..\record_rtti.pas"/>
|
||||||
|
<UnitName Value="record_rtti"/>
|
||||||
|
<CursorPos X="5" Y="66"/>
|
||||||
|
<TopLine Value="51"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit50>
|
||||||
|
<Unit51>
|
||||||
|
<Filename Value="..\..\server_service_imputils.pas"/>
|
||||||
|
<UnitName Value="server_service_imputils"/>
|
||||||
|
<CursorPos X="5" Y="18"/>
|
||||||
|
<TopLine Value="3"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit51>
|
||||||
|
<Unit52>
|
||||||
|
<Filename Value="..\..\server_service_soap.pas"/>
|
||||||
|
<UnitName Value="server_service_soap"/>
|
||||||
|
<CursorPos X="15" Y="22"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<EditorIndex Value="2"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit52>
|
||||||
|
<Unit53>
|
||||||
|
<Filename Value="..\..\base_soap_formatter.pas"/>
|
||||||
|
<UnitName Value="base_soap_formatter"/>
|
||||||
|
<CursorPos X="5" Y="356"/>
|
||||||
|
<TopLine Value="342"/>
|
||||||
|
<EditorIndex Value="3"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit53>
|
||||||
|
<Unit54>
|
||||||
|
<Filename Value="..\..\server_binary_formatter.pas"/>
|
||||||
|
<UnitName Value="server_binary_formatter"/>
|
||||||
|
<CursorPos X="5" Y="18"/>
|
||||||
|
<TopLine Value="3"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit54>
|
||||||
|
<Unit55>
|
||||||
|
<Filename Value="..\..\metadata_repository.pas"/>
|
||||||
|
<UnitName Value="metadata_repository"/>
|
||||||
|
<CursorPos X="5" Y="117"/>
|
||||||
|
<TopLine Value="102"/>
|
||||||
|
<EditorIndex Value="4"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit55>
|
||||||
</Units>
|
</Units>
|
||||||
<JumpHistory Count="0" HistoryIndex="-1"/>
|
<JumpHistory Count="22" HistoryIndex="21">
|
||||||
|
<Position1>
|
||||||
|
<Filename Value="wst_apache_binding.pas"/>
|
||||||
|
<Caret Line="72" Column="16" TopLine="70"/>
|
||||||
|
</Position1>
|
||||||
|
<Position2>
|
||||||
|
<Filename Value="..\..\base_service_intf.pas"/>
|
||||||
|
<Caret Line="1" Column="1" TopLine="1"/>
|
||||||
|
</Position2>
|
||||||
|
<Position3>
|
||||||
|
<Filename Value="..\..\base_service_intf.pas"/>
|
||||||
|
<Caret Line="20" Column="5" TopLine="5"/>
|
||||||
|
</Position3>
|
||||||
|
<Position4>
|
||||||
|
<Filename Value="..\..\base_service_intf.pas"/>
|
||||||
|
<Caret Line="1252" Column="25" TopLine="1237"/>
|
||||||
|
</Position4>
|
||||||
|
<Position5>
|
||||||
|
<Filename Value="wst_apache_binding.pas"/>
|
||||||
|
<Caret Line="73" Column="19" TopLine="70"/>
|
||||||
|
</Position5>
|
||||||
|
<Position6>
|
||||||
|
<Filename Value="wst_apache_binding.pas"/>
|
||||||
|
<Caret Line="73" Column="34" TopLine="70"/>
|
||||||
|
</Position6>
|
||||||
|
<Position7>
|
||||||
|
<Filename Value="wst_apache_binding.pas"/>
|
||||||
|
<Caret Line="74" Column="22" TopLine="70"/>
|
||||||
|
</Position7>
|
||||||
|
<Position8>
|
||||||
|
<Filename Value="..\..\server_service_soap.pas"/>
|
||||||
|
<Caret Line="1" Column="1" TopLine="1"/>
|
||||||
|
</Position8>
|
||||||
|
<Position9>
|
||||||
|
<Filename Value="..\..\server_service_soap.pas"/>
|
||||||
|
<Caret Line="22" Column="18" TopLine="3"/>
|
||||||
|
</Position9>
|
||||||
|
<Position10>
|
||||||
|
<Filename Value="..\..\base_soap_formatter.pas"/>
|
||||||
|
<Caret Line="1" Column="1" TopLine="1"/>
|
||||||
|
</Position10>
|
||||||
|
<Position11>
|
||||||
|
<Filename Value="..\..\base_soap_formatter.pas"/>
|
||||||
|
<Caret Line="18" Column="5" TopLine="3"/>
|
||||||
|
</Position11>
|
||||||
|
<Position12>
|
||||||
|
<Filename Value="wst_apache_binding.pas"/>
|
||||||
|
<Caret Line="74" Column="41" TopLine="70"/>
|
||||||
|
</Position12>
|
||||||
|
<Position13>
|
||||||
|
<Filename Value="wst_apache_binding.pas"/>
|
||||||
|
<Caret Line="74" Column="56" TopLine="70"/>
|
||||||
|
</Position13>
|
||||||
|
<Position14>
|
||||||
|
<Filename Value="wst_apache_binding.pas"/>
|
||||||
|
<Caret Line="75" Column="22" TopLine="70"/>
|
||||||
|
</Position14>
|
||||||
|
<Position15>
|
||||||
|
<Filename Value="..\..\metadata_repository.pas"/>
|
||||||
|
<Caret Line="1" Column="1" TopLine="1"/>
|
||||||
|
</Position15>
|
||||||
|
<Position16>
|
||||||
|
<Filename Value="..\..\metadata_repository.pas"/>
|
||||||
|
<Caret Line="18" Column="5" TopLine="3"/>
|
||||||
|
</Position16>
|
||||||
|
<Position17>
|
||||||
|
<Filename Value="wst_apache_binding.pas"/>
|
||||||
|
<Caret Line="75" Column="36" TopLine="70"/>
|
||||||
|
</Position17>
|
||||||
|
<Position18>
|
||||||
|
<Filename Value="wst_apache_binding.pas"/>
|
||||||
|
<Caret Line="76" Column="12" TopLine="70"/>
|
||||||
|
</Position18>
|
||||||
|
<Position19>
|
||||||
|
<Filename Value="wst_apache_binding.pas"/>
|
||||||
|
<Caret Line="74" Column="19" TopLine="70"/>
|
||||||
|
</Position19>
|
||||||
|
<Position20>
|
||||||
|
<Filename Value="..\..\server_service_soap.pas"/>
|
||||||
|
<Caret Line="22" Column="15" TopLine="1"/>
|
||||||
|
</Position20>
|
||||||
|
<Position21>
|
||||||
|
<Filename Value="..\..\base_soap_formatter.pas"/>
|
||||||
|
<Caret Line="1" Column="1" TopLine="7"/>
|
||||||
|
</Position21>
|
||||||
|
<Position22>
|
||||||
|
<Filename Value="..\..\base_soap_formatter.pas"/>
|
||||||
|
<Caret Line="18" Column="58" TopLine="3"/>
|
||||||
|
</Position22>
|
||||||
|
</JumpHistory>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
<CompilerOptions>
|
<CompilerOptions>
|
||||||
<Version Value="5"/>
|
<Version Value="5"/>
|
||||||
@ -147,9 +508,10 @@
|
|||||||
<Filename Value="mod_wst.so"/>
|
<Filename Value="mod_wst.so"/>
|
||||||
</Target>
|
</Target>
|
||||||
<SearchPaths>
|
<SearchPaths>
|
||||||
<OtherUnitFiles Value="..\;..\..\;..\..\wst_rtti_filter\;$(LazarusDir)\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\;$(LazarusDir)\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\apr\;$(LazarusDir)\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\apriconv\;$(LazarusDir)\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\aprutil\"/>
|
<IncludeFiles Value="..\..\"/>
|
||||||
|
<OtherUnitFiles Value="..\;..\..\;..\..\wst_rtti_filter\;$(FPCSrcDir)\packages\base\httpd\httpd-2.0\;$(FPCSrcDir)\packages\base\httpd\httpd-2.0\apr\;$(FPCSrcDir)\packages\base\httpd\httpd-2.0\apriconv\;$(FPCSrcDir)\packages\base\httpd\httpd-2.0\aprutil\"/>
|
||||||
<UnitOutputDirectory Value="obj"/>
|
<UnitOutputDirectory Value="obj"/>
|
||||||
<SrcPath Value="$(LazarusDir)\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\;$(LazarusDir)\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\apr\;$(LazarusDir)\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\apriconv\;$(LazarusDir)\fpc\2.1.3\source\packages\base\httpd\httpd-2.2\aprutil\"/>
|
<SrcPath Value="$(FPCSrcDir)\packages\base\httpd\httpd-2.0\;$(FPCSrcDir)\packages\base\httpd\httpd-2.0\apr\;$(FPCSrcDir)\packages\base\httpd\httpd-2.0\apriconv\;$(FPCSrcDir)\packages\base\httpd\httpd-2.0\aprutil\"/>
|
||||||
</SearchPaths>
|
</SearchPaths>
|
||||||
<CodeGeneration>
|
<CodeGeneration>
|
||||||
<Generate Value="Faster"/>
|
<Generate Value="Faster"/>
|
||||||
|
@ -41,6 +41,7 @@ end;
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
default_module_ptr := @wst_module;
|
default_module_ptr := @wst_module;
|
||||||
|
wst_apache_binding.wst_module_ptr := default_module_ptr;
|
||||||
FillChar(default_module_ptr^, SizeOf(default_module_ptr^), 0);
|
FillChar(default_module_ptr^, SizeOf(default_module_ptr^), 0);
|
||||||
STANDARD20_MODULE_STUFF(default_module_ptr^);
|
STANDARD20_MODULE_STUFF(default_module_ptr^);
|
||||||
with wst_module do
|
with wst_module do
|
||||||
@ -48,5 +49,9 @@ begin
|
|||||||
name := MODULE_NAME;
|
name := MODULE_NAME;
|
||||||
magic := MODULE_MAGIC_COOKIE;
|
magic := MODULE_MAGIC_COOKIE;
|
||||||
register_hooks := @RegisterHooks;
|
register_hooks := @RegisterHooks;
|
||||||
|
create_dir_config := @wst_create_dir_config;
|
||||||
|
cmds := WstCommandStructArray;
|
||||||
end;
|
end;
|
||||||
|
WstCommandStructArray[0].cmd_data := @WstConfigData^.BasePath;
|
||||||
|
FillChar(WstCommandStructArray[1],SizeOf(command_rec),#0);
|
||||||
end.
|
end.
|
||||||
|
@ -1,4 +1,27 @@
|
|||||||
{$DEFINE WST_DBG}
|
{$UNDEF WST_DBG}
|
||||||
|
|
||||||
|
(*WST_BROKER enable the service brokering :
|
||||||
|
if enabled, this module just forwards the request to the
|
||||||
|
implementation libraries contained in the WstRootPath path.
|
||||||
|
WST load these libraries in the local file system folder
|
||||||
|
configured by the value of WstRootPath.
|
||||||
|
WstRootPath is a configuration directive which must be
|
||||||
|
in the wst "Location" scope.
|
||||||
|
Example :
|
||||||
|
|
||||||
|
<Location /wst>
|
||||||
|
SetHandler wst-handler
|
||||||
|
WstRootPath "C:/Programmes/lazarus/wst/trunk/samples/library_server/"
|
||||||
|
</Location>
|
||||||
|
|
||||||
|
Services can then be invoked through the following addressing schema
|
||||||
|
http://127.0.0.1:8080/wst/services/lib_server/UserService
|
||||||
|
|
||||||
|
lib_server : the library name ( without extension )
|
||||||
|
UserService : the target service
|
||||||
|
wst/services : constant.
|
||||||
|
*)
|
||||||
|
{$DEFINE WST_BROKER}
|
||||||
|
|
||||||
unit wst_apache_binding;
|
unit wst_apache_binding;
|
||||||
|
|
||||||
@ -18,24 +41,81 @@ const
|
|||||||
sHTTP_BINARY_CONTENT_TYPE = 'application/octet-stream';
|
sHTTP_BINARY_CONTENT_TYPE = 'application/octet-stream';
|
||||||
sCONTENT_TYPE = 'Content-Type';
|
sCONTENT_TYPE = 'Content-Type';
|
||||||
|
|
||||||
|
sWstRootPath = 'WstRootPath'; // The WST local file system path configure in apache
|
||||||
|
sWST_LIBRARY_EXTENSION = '.wml';
|
||||||
|
|
||||||
|
type
|
||||||
|
PWstConfigData = ^TWstConfigData;
|
||||||
|
TWstConfigData = record
|
||||||
|
Dir : PChar;
|
||||||
|
BasePath : PChar;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
wst_module_ptr : Pmodule = nil;
|
||||||
|
WstConfigData : PWstConfigData = nil;
|
||||||
|
WstCommandStructArray : array[0..1] of command_rec = (
|
||||||
|
( name : sWstRootPath;
|
||||||
|
func : ( func_take1 : @ap_set_string_slot );
|
||||||
|
cmd_data : ( nil {@WstConfigData^.BasePath} );
|
||||||
|
req_override : OR_ALL;
|
||||||
|
args_how : TAKE1;
|
||||||
|
errmsg : 'usage : WstRootPath <path>' + LineEnding + ' path is the path to the WST root path.';
|
||||||
|
),
|
||||||
|
()
|
||||||
|
);
|
||||||
|
|
||||||
function wst_RequestHandler(r: Prequest_rec): Integer;
|
function wst_RequestHandler(r: Prequest_rec): Integer;
|
||||||
|
function wst_create_dir_config(p: Papr_pool_t; dir: PChar) : Pointer;cdecl;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
uses base_service_intf,
|
uses base_service_intf,
|
||||||
server_service_intf, server_service_imputils,
|
server_service_intf, server_service_imputils,
|
||||||
server_service_soap, server_binary_formatter,
|
server_service_soap, server_binary_formatter, server_service_xmlrpc,
|
||||||
metadata_repository, metadata_wsdl, DOM, XMLWrite,
|
metadata_repository, metadata_wsdl,
|
||||||
|
imp_utils, binary_streamer, library_base_intf, library_imp_utils,
|
||||||
user_service_intf, user_service_intf_binder, user_service_intf_imp,
|
DOM, XMLWrite,
|
||||||
metadata_service, metadata_service_binder, metadata_service_imp;
|
metadata_service, metadata_service_binder, metadata_service_imp;
|
||||||
|
|
||||||
|
procedure wst_initialize();
|
||||||
|
begin
|
||||||
|
RegisterStdTypes();
|
||||||
|
Server_service_RegisterBinaryFormat();
|
||||||
|
Server_service_RegisterSoapFormat();
|
||||||
|
//Server_service_RegisterXmlRpcFormat();
|
||||||
|
|
||||||
|
RegisterWSTMetadataServiceImplementationFactory();
|
||||||
|
Server_service_RegisterWSTMetadataServiceService();
|
||||||
|
end;
|
||||||
|
|
||||||
|
function wst_create_dir_config(p: Papr_pool_t; dir: PChar) : Pointer; cdecl;
|
||||||
|
begin
|
||||||
|
WstConfigData := PWstConfigData(apr_palloc(p,SizeOf(TWstConfigData)));
|
||||||
|
FillChar(WstConfigData^,SizeOf(TWstConfigData),#0);
|
||||||
|
WstConfigData^.Dir := apr_pstrdup(p,dir);
|
||||||
|
Result := WstConfigData;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function GetWstPath(): PChar;inline;
|
||||||
|
begin
|
||||||
|
Result := WstConfigData^.BasePath;
|
||||||
|
end;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
PRequestArgument = ^TRequestArgument;
|
||||||
|
TRequestArgument = record
|
||||||
|
Name : shortstring;
|
||||||
|
Value : shortstring;
|
||||||
|
Next : PRequestArgument;
|
||||||
|
end;
|
||||||
TRequestInfo = record
|
TRequestInfo = record
|
||||||
|
InnerRequest : Pointer;
|
||||||
Root : string;
|
Root : string;
|
||||||
URI : string;
|
URI : string;
|
||||||
ContentType : string;
|
ContentType : string;
|
||||||
Buffer : string;
|
Buffer : string;
|
||||||
Argument : string;
|
Arguments : string;
|
||||||
|
ArgList : PRequestArgument;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TResponseInfo = record
|
TResponseInfo = record
|
||||||
@ -43,6 +123,52 @@ type
|
|||||||
ContentType : string;
|
ContentType : string;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function ParseArgs(
|
||||||
|
const APool : Papr_pool_t;
|
||||||
|
const AArgs : string;
|
||||||
|
const ASeparator : Char = '&'
|
||||||
|
) : PRequestArgument;
|
||||||
|
var
|
||||||
|
locBuffer, locArg : string;
|
||||||
|
locPrev, locTmpArg : PRequestArgument;
|
||||||
|
begin
|
||||||
|
Result := nil;
|
||||||
|
locBuffer := Trim(AArgs);
|
||||||
|
if not IsStrEmpty(locBuffer) then begin
|
||||||
|
locTmpArg := nil;
|
||||||
|
locPrev := nil;
|
||||||
|
while True do begin
|
||||||
|
locArg := GetToken(locBuffer,ASeparator);
|
||||||
|
if IsStrEmpty(locArg) then
|
||||||
|
Break;
|
||||||
|
locPrev := locTmpArg;
|
||||||
|
locTmpArg := PRequestArgument(apr_palloc(APool,SizeOf(TRequestArgument)));
|
||||||
|
FillChar(locTmpArg^,SizeOf(TRequestArgument),#0);
|
||||||
|
if ( Result = nil ) then begin
|
||||||
|
Result := locTmpArg;
|
||||||
|
end else begin
|
||||||
|
locPrev^.Next := locTmpArg;
|
||||||
|
end;
|
||||||
|
locTmpArg^.Name := GetToken(locArg,'=');
|
||||||
|
locTmpArg^.Value := locArg;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function FindArg(const AArgs : PRequestArgument; const AName : string) : PRequestArgument;
|
||||||
|
var
|
||||||
|
p : PRequestArgument;
|
||||||
|
begin
|
||||||
|
Result := nil;
|
||||||
|
p := AArgs;
|
||||||
|
while Assigned(p) do begin
|
||||||
|
if AnsiSameText(AName,AArgs^.Name) then begin
|
||||||
|
Result := p;
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
|
p := p^.Next;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure SaveStringToFile(const AStr,AFile:string;const AKeepExisting : Boolean);
|
procedure SaveStringToFile(const AStr,AFile:string;const AKeepExisting : Boolean);
|
||||||
begin
|
begin
|
||||||
@ -154,7 +280,7 @@ begin
|
|||||||
Result := '<html>' +
|
Result := '<html>' +
|
||||||
'<head>'+
|
'<head>'+
|
||||||
'<title>'+
|
'<title>'+
|
||||||
'The Web Service Toolkit generated Metadata table'+
|
'The Web Service Toolkit generated Metadata table XXXXX'+
|
||||||
'</title>'+
|
'</title>'+
|
||||||
'<body>' +
|
'<body>' +
|
||||||
'<p BGCOLOR="#DDEEFF"><FONT FACE="Arial" COLOR="#0000A0" SIZE="+2">The following repositories has available. Click on the link to view the corresponding WSDL.</FONT></p>'+
|
'<p BGCOLOR="#DDEEFF"><FONT FACE="Arial" COLOR="#0000A0" SIZE="+2">The following repositories has available. Click on the link to view the corresponding WSDL.</FONT></p>'+
|
||||||
@ -233,7 +359,7 @@ begin
|
|||||||
AResponseInfo.ContentType := sHTTP_BINARY_CONTENT_TYPE
|
AResponseInfo.ContentType := sHTTP_BINARY_CONTENT_TYPE
|
||||||
else
|
else
|
||||||
AResponseInfo.ContentType := ctntyp;
|
AResponseInfo.ContentType := ctntyp;
|
||||||
rqst := TRequestBuffer.Create(trgt,ctntyp,inStream,outStream,'');
|
rqst := TRequestBuffer.Create(trgt,ctntyp,inStream,outStream,ARequestInfo.ContentType);
|
||||||
HandleServiceRequest(rqst);
|
HandleServiceRequest(rqst);
|
||||||
i := outStream.Size;
|
i := outStream.Size;
|
||||||
if ( i > 0 ) then begin
|
if ( i > 0 ) then begin
|
||||||
@ -244,7 +370,7 @@ begin
|
|||||||
outStream.Free();
|
outStream.Free();
|
||||||
inStream.Free();
|
inStream.Free();
|
||||||
{$IFDEF WST_DBG}
|
{$IFDEF WST_DBG}
|
||||||
SaveStringToFile('RequestInfo.ContentType=' + ARequestInfo.Argument + LineEnding,'c:\log.log',False);
|
SaveStringToFile('RequestInfo.ContentType=' + ARequestInfo.Arguments + LineEnding,'c:\log.log',False);
|
||||||
{SaveStringToFile('RequestInfo.Buffer=' + ARequestInfo.Buffer + LineEnding,'E:\Inoussa\Sources\lazarus\wst\v0.3\tests\apache_module\log.log',True);
|
{SaveStringToFile('RequestInfo.Buffer=' + ARequestInfo.Buffer + LineEnding,'E:\Inoussa\Sources\lazarus\wst\v0.3\tests\apache_module\log.log',True);
|
||||||
SaveStringToFile('RequestInfo.URI=' + ARequestInfo.URI + LineEnding,'E:\Inoussa\Sources\lazarus\wst\v0.3\tests\apache_module\log.log',True);
|
SaveStringToFile('RequestInfo.URI=' + ARequestInfo.URI + LineEnding,'E:\Inoussa\Sources\lazarus\wst\v0.3\tests\apache_module\log.log',True);
|
||||||
SaveStringToFile('ResponseInfo.ContentType=' + AResponseInfo.ContentType + LineEnding,'E:\Inoussa\Sources\lazarus\wst\v0.3\tests\apache_module\log.log',True);
|
SaveStringToFile('ResponseInfo.ContentType=' + AResponseInfo.ContentType + LineEnding,'E:\Inoussa\Sources\lazarus\wst\v0.3\tests\apache_module\log.log',True);
|
||||||
@ -254,14 +380,94 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
const MAX_ERR_LEN = 500;
|
||||||
|
function ProcessServiceRequestLibrary(
|
||||||
|
const ARequestInfo : TRequestInfo;
|
||||||
|
out AResponseInfo : TResponseInfo
|
||||||
|
) : Boolean;
|
||||||
|
var
|
||||||
|
loc_path, ctntyp : string;
|
||||||
|
targetModuleName, targetFormat, targetService : string;
|
||||||
|
wrtr : IDataStore;
|
||||||
|
buffStream : TMemoryStream;
|
||||||
|
strBuff : string;
|
||||||
|
intfBuffer : IwstStream;
|
||||||
|
bl : LongInt;
|
||||||
|
targetModule : IwstModule;
|
||||||
|
handlerProc : TwstLibraryHandlerFunction;
|
||||||
|
pArg : PRequestArgument;
|
||||||
|
i : Integer;
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
FillChar(AResponseInfo,SizeOf(TResponseInfo),#0);
|
||||||
|
loc_path := ARequestInfo.URI;
|
||||||
|
targetModuleName := ExtractNextPathElement(loc_path);
|
||||||
|
Result := False;
|
||||||
|
targetModule := LibraryManager.Get(GetWstPath() + targetModuleName + sWST_LIBRARY_EXTENSION);
|
||||||
|
handlerProc := TwstLibraryHandlerFunction(targetModule.GetProc(WST_LIB_HANDLER));
|
||||||
|
if not Assigned(handlerProc) then
|
||||||
|
Exit;
|
||||||
|
targetService := ExtractNextPathElement(loc_path);
|
||||||
|
if AnsiSameText(sWSDL,targetService) then
|
||||||
|
Exit;
|
||||||
|
pArg := FindArg(ARequestInfo.ArgList,'format');
|
||||||
|
if Assigned(pArg) then
|
||||||
|
targetFormat := pArg^.Value;
|
||||||
|
if IsStrEmpty(targetFormat) then
|
||||||
|
targetFormat := ARequestInfo.ContentType;
|
||||||
|
buffStream := TMemoryStream.Create();
|
||||||
|
try
|
||||||
|
wrtr := CreateBinaryWriter(buffStream);
|
||||||
|
wrtr.WriteInt32S(0);
|
||||||
|
wrtr.WriteStr(targetService);
|
||||||
|
wrtr.WriteStr(ARequestInfo.ContentType);
|
||||||
|
wrtr.WriteStr(targetFormat);
|
||||||
|
wrtr.WriteStr(ARequestInfo.Buffer);
|
||||||
|
buffStream.Position := 0;
|
||||||
|
wrtr.WriteInt32S(buffStream.Size-4);
|
||||||
|
|
||||||
|
buffStream.Position := 0;
|
||||||
|
intfBuffer := TwstStream.Create(buffStream);
|
||||||
|
bl := MAX_ERR_LEN;
|
||||||
|
strBuff := StringOfChar(#0,bl);
|
||||||
|
i := handlerProc(intfBuffer,Pointer(strBuff),bl);
|
||||||
|
if ( i <> RET_OK ) then
|
||||||
|
raise Exception.CreateFmt('Library server error :'#13'Code : %d'#13'Message : %s',[i,strBuff]);
|
||||||
|
|
||||||
|
if AnsiSameText(sBINARY_CONTENT_TYPE,ARequestInfo.ContentType) then
|
||||||
|
AResponseInfo.ContentType := sHTTP_BINARY_CONTENT_TYPE
|
||||||
|
else
|
||||||
|
AResponseInfo.ContentType := ARequestInfo.ContentType;
|
||||||
|
buffStream.Position := 0;
|
||||||
|
if ( buffStream.Size > 0 ) then begin
|
||||||
|
SetLength(AResponseInfo.ContentText,buffStream.Size);
|
||||||
|
buffStream.Read(AResponseInfo.ContentText[1],Length(AResponseInfo.ContentText));
|
||||||
|
end else begin
|
||||||
|
AResponseInfo.ContentText := '';
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
buffStream.Free();
|
||||||
|
end;
|
||||||
|
|
||||||
|
Result := True;
|
||||||
|
except
|
||||||
|
on e : Exception do begin
|
||||||
|
Result := False;
|
||||||
|
ap_log_rerror(PCHAR('wst_apache_binding'),392,APLOG_ERR,0,Prequest_rec(ARequestInfo.InnerRequest),PCHAR(e.Message),[]);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function wst_RequestHandler(r: Prequest_rec): Integer;
|
function wst_RequestHandler(r: Prequest_rec): Integer;
|
||||||
|
|
||||||
function FillRequestInfo(var ARequestInfo : TRequestInfo):Integer;
|
function FillRequestInfo(var ARequestInfo : TRequestInfo):Integer;
|
||||||
begin
|
begin
|
||||||
|
ARequestInfo.InnerRequest := r;
|
||||||
ARequestInfo.ContentType := apr_table_get(r^.headers_in,sCONTENT_TYPE);
|
ARequestInfo.ContentType := apr_table_get(r^.headers_in,sCONTENT_TYPE);
|
||||||
ARequestInfo.Root := ap_get_server_name(r) + sSEPARATOR + sWST_ROOT + sSEPARATOR;
|
ARequestInfo.Root := ap_get_server_name(r) + sSEPARATOR + sWST_ROOT + sSEPARATOR;
|
||||||
ARequestInfo.URI := r^.uri;
|
ARequestInfo.URI := r^.uri;
|
||||||
ARequestInfo.Argument := r^.args;
|
ARequestInfo.Arguments := r^.args;
|
||||||
|
ARequestInfo.ArgList := ParseArgs(r^.pool,ARequestInfo.Arguments);
|
||||||
Result := ReadBuffer(r,ARequestInfo.Buffer);
|
Result := ReadBuffer(r,ARequestInfo.Buffer);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -279,8 +485,14 @@ begin
|
|||||||
|
|
||||||
try
|
try
|
||||||
if AnsiSameText(sSERVICES_PREFIXE,ExtractNextPathElement(loc_RequestInfo.URI)) then begin
|
if AnsiSameText(sSERVICES_PREFIXE,ExtractNextPathElement(loc_RequestInfo.URI)) then begin
|
||||||
|
|
||||||
|
{$IFDEF WST_BROKER}
|
||||||
|
if not ProcessServiceRequestLibrary(loc_RequestInfo,loc_ResponseInfo) then
|
||||||
|
ProcessWSDLRequest(loc_RequestInfo,loc_ResponseInfo);
|
||||||
|
{$ELSE}
|
||||||
if not ProcessServiceRequest(loc_RequestInfo,loc_ResponseInfo) then
|
if not ProcessServiceRequest(loc_RequestInfo,loc_ResponseInfo) then
|
||||||
ProcessWSDLRequest(loc_RequestInfo,loc_ResponseInfo);
|
ProcessWSDLRequest(loc_RequestInfo,loc_ResponseInfo);
|
||||||
|
{$ENDIF}
|
||||||
end else begin
|
end else begin
|
||||||
ProcessWSDLRequest(loc_RequestInfo,loc_ResponseInfo);
|
ProcessWSDLRequest(loc_RequestInfo,loc_ResponseInfo);
|
||||||
end;
|
end;
|
||||||
@ -294,7 +506,6 @@ begin
|
|||||||
ap_rputs(PCHAR(loc_ResponseInfo.ContentText), r);
|
ap_rputs(PCHAR(loc_ResponseInfo.ContentText), r);
|
||||||
end;
|
end;
|
||||||
Result := OK;
|
Result := OK;
|
||||||
Exit;
|
|
||||||
except
|
except
|
||||||
on e : Exception do begin
|
on e : Exception do begin
|
||||||
ap_set_content_type(r, 'text/html');
|
ap_set_content_type(r, 'text/html');
|
||||||
@ -307,14 +518,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
RegisterStdTypes();
|
wst_initialize();
|
||||||
Server_service_RegisterBinaryFormat();
|
|
||||||
Server_service_RegisterSoapFormat();
|
|
||||||
|
|
||||||
RegisterUserServiceImplementationFactory();
|
|
||||||
Server_service_RegisterUserServiceService();
|
|
||||||
|
|
||||||
RegisterWSTMetadataServiceImplementationFactory();
|
|
||||||
Server_service_RegisterWSTMetadataServiceService();
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -30,15 +30,15 @@
|
|||||||
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
|
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
|
||||||
</local>
|
</local>
|
||||||
</RunParams>
|
</RunParams>
|
||||||
<Units Count="43">
|
<Units Count="45">
|
||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="user_client_console.pas"/>
|
<Filename Value="user_client_console.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="user_client_console"/>
|
<UnitName Value="user_client_console"/>
|
||||||
<CursorPos X="1" Y="12"/>
|
<CursorPos X="44" Y="147"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="136"/>
|
||||||
<EditorIndex Value="0"/>
|
<EditorIndex Value="0"/>
|
||||||
<UsageCount Value="76"/>
|
<UsageCount Value="82"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit0>
|
</Unit0>
|
||||||
<Unit1>
|
<Unit1>
|
||||||
@ -46,8 +46,8 @@
|
|||||||
<UnitName Value="user_service_intf_proxy"/>
|
<UnitName Value="user_service_intf_proxy"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="4"/>
|
<EditorIndex Value="7"/>
|
||||||
<UsageCount Value="30"/>
|
<UsageCount Value="33"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit1>
|
</Unit1>
|
||||||
<Unit2>
|
<Unit2>
|
||||||
@ -55,8 +55,8 @@
|
|||||||
<UnitName Value="synapse_tcp_protocol"/>
|
<UnitName Value="synapse_tcp_protocol"/>
|
||||||
<CursorPos X="1" Y="23"/>
|
<CursorPos X="1" Y="23"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="12"/>
|
<EditorIndex Value="15"/>
|
||||||
<UsageCount Value="37"/>
|
<UsageCount Value="40"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit2>
|
</Unit2>
|
||||||
<Unit3>
|
<Unit3>
|
||||||
@ -64,8 +64,8 @@
|
|||||||
<UnitName Value="service_intf"/>
|
<UnitName Value="service_intf"/>
|
||||||
<CursorPos X="51" Y="34"/>
|
<CursorPos X="51" Y="34"/>
|
||||||
<TopLine Value="21"/>
|
<TopLine Value="21"/>
|
||||||
<EditorIndex Value="10"/>
|
<EditorIndex Value="13"/>
|
||||||
<UsageCount Value="33"/>
|
<UsageCount Value="36"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit3>
|
</Unit3>
|
||||||
<Unit4>
|
<Unit4>
|
||||||
@ -73,8 +73,8 @@
|
|||||||
<UnitName Value="user_service_intf"/>
|
<UnitName Value="user_service_intf"/>
|
||||||
<CursorPos X="53" Y="11"/>
|
<CursorPos X="53" Y="11"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="5"/>
|
<EditorIndex Value="8"/>
|
||||||
<UsageCount Value="29"/>
|
<UsageCount Value="32"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit4>
|
</Unit4>
|
||||||
<Unit5>
|
<Unit5>
|
||||||
@ -94,10 +94,10 @@
|
|||||||
<Unit7>
|
<Unit7>
|
||||||
<Filename Value="..\..\library_protocol.pas"/>
|
<Filename Value="..\..\library_protocol.pas"/>
|
||||||
<UnitName Value="library_protocol"/>
|
<UnitName Value="library_protocol"/>
|
||||||
<CursorPos X="1" Y="24"/>
|
<CursorPos X="1" Y="137"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="19"/>
|
||||||
<EditorIndex Value="2"/>
|
<EditorIndex Value="2"/>
|
||||||
<UsageCount Value="25"/>
|
<UsageCount Value="28"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit7>
|
</Unit7>
|
||||||
<Unit8>
|
<Unit8>
|
||||||
@ -142,8 +142,8 @@
|
|||||||
<UnitName Value="synapse_http_protocol"/>
|
<UnitName Value="synapse_http_protocol"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="13"/>
|
<TopLine Value="13"/>
|
||||||
<EditorIndex Value="9"/>
|
<EditorIndex Value="12"/>
|
||||||
<UsageCount Value="19"/>
|
<UsageCount Value="22"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit14>
|
</Unit14>
|
||||||
<Unit15>
|
<Unit15>
|
||||||
@ -162,9 +162,11 @@
|
|||||||
<Unit17>
|
<Unit17>
|
||||||
<Filename Value="..\..\library_imp_utils.pas"/>
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
<UnitName Value="library_imp_utils"/>
|
<UnitName Value="library_imp_utils"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="187"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="170"/>
|
||||||
<UsageCount Value="8"/>
|
<EditorIndex Value="3"/>
|
||||||
|
<UsageCount Value="13"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
</Unit17>
|
</Unit17>
|
||||||
<Unit18>
|
<Unit18>
|
||||||
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\win\dynlibs.inc"/>
|
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\win\dynlibs.inc"/>
|
||||||
@ -177,8 +179,8 @@
|
|||||||
<UnitName Value="semaphore"/>
|
<UnitName Value="semaphore"/>
|
||||||
<CursorPos X="1" Y="140"/>
|
<CursorPos X="1" Y="140"/>
|
||||||
<TopLine Value="110"/>
|
<TopLine Value="110"/>
|
||||||
<EditorIndex Value="3"/>
|
<EditorIndex Value="6"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="13"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit19>
|
</Unit19>
|
||||||
<Unit20>
|
<Unit20>
|
||||||
@ -194,15 +196,15 @@
|
|||||||
<UnitName Value="xmlrpc_formatter"/>
|
<UnitName Value="xmlrpc_formatter"/>
|
||||||
<CursorPos X="54" Y="21"/>
|
<CursorPos X="54" Y="21"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="62"/>
|
<UsageCount Value="68"/>
|
||||||
</Unit21>
|
</Unit21>
|
||||||
<Unit22>
|
<Unit22>
|
||||||
<Filename Value="..\..\binary_formatter.pas"/>
|
<Filename Value="..\..\binary_formatter.pas"/>
|
||||||
<UnitName Value="binary_formatter"/>
|
<UnitName Value="binary_formatter"/>
|
||||||
<CursorPos X="20" Y="21"/>
|
<CursorPos X="20" Y="21"/>
|
||||||
<TopLine Value="12"/>
|
<TopLine Value="12"/>
|
||||||
<EditorIndex Value="11"/>
|
<EditorIndex Value="14"/>
|
||||||
<UsageCount Value="30"/>
|
<UsageCount Value="33"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit22>
|
</Unit22>
|
||||||
<Unit23>
|
<Unit23>
|
||||||
@ -306,8 +308,8 @@
|
|||||||
<UnitName Value="indy_http_protocol"/>
|
<UnitName Value="indy_http_protocol"/>
|
||||||
<CursorPos X="1" Y="16"/>
|
<CursorPos X="1" Y="16"/>
|
||||||
<TopLine Value="109"/>
|
<TopLine Value="109"/>
|
||||||
<EditorIndex Value="8"/>
|
<EditorIndex Value="11"/>
|
||||||
<UsageCount Value="15"/>
|
<UsageCount Value="18"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit37>
|
</Unit37>
|
||||||
<Unit38>
|
<Unit38>
|
||||||
@ -320,10 +322,10 @@
|
|||||||
<Unit39>
|
<Unit39>
|
||||||
<Filename Value="..\..\ics_tcp_protocol.pas"/>
|
<Filename Value="..\..\ics_tcp_protocol.pas"/>
|
||||||
<UnitName Value="ics_tcp_protocol"/>
|
<UnitName Value="ics_tcp_protocol"/>
|
||||||
<CursorPos X="1" Y="22"/>
|
<CursorPos X="5" Y="41"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="26"/>
|
||||||
<EditorIndex Value="1"/>
|
<EditorIndex Value="1"/>
|
||||||
<UsageCount Value="14"/>
|
<UsageCount Value="17"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit39>
|
</Unit39>
|
||||||
<Unit40>
|
<Unit40>
|
||||||
@ -331,8 +333,8 @@
|
|||||||
<UnitName Value="ics_http_protocol"/>
|
<UnitName Value="ics_http_protocol"/>
|
||||||
<CursorPos X="1" Y="25"/>
|
<CursorPos X="1" Y="25"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="7"/>
|
<EditorIndex Value="10"/>
|
||||||
<UsageCount Value="14"/>
|
<UsageCount Value="17"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit40>
|
</Unit40>
|
||||||
<Unit41>
|
<Unit41>
|
||||||
@ -340,8 +342,8 @@
|
|||||||
<UnitName Value="same_process_protocol"/>
|
<UnitName Value="same_process_protocol"/>
|
||||||
<CursorPos X="1" Y="1"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="13"/>
|
<TopLine Value="13"/>
|
||||||
<EditorIndex Value="6"/>
|
<EditorIndex Value="9"/>
|
||||||
<UsageCount Value="14"/>
|
<UsageCount Value="17"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit41>
|
</Unit41>
|
||||||
<Unit42>
|
<Unit42>
|
||||||
@ -354,17 +356,26 @@
|
|||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="10"/>
|
||||||
</Unit42>
|
</Unit42>
|
||||||
|
<Unit43>
|
||||||
|
<Filename Value="..\..\binary_streamer.pas"/>
|
||||||
|
<UnitName Value="binary_streamer"/>
|
||||||
|
<CursorPos X="21" Y="15"/>
|
||||||
|
<TopLine Value="1"/>
|
||||||
|
<EditorIndex Value="5"/>
|
||||||
|
<UsageCount Value="13"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit43>
|
||||||
|
<Unit44>
|
||||||
|
<Filename Value="..\..\library_base_intf.pas"/>
|
||||||
|
<UnitName Value="library_base_intf"/>
|
||||||
|
<CursorPos X="25" Y="17"/>
|
||||||
|
<TopLine Value="5"/>
|
||||||
|
<EditorIndex Value="4"/>
|
||||||
|
<UsageCount Value="13"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit44>
|
||||||
</Units>
|
</Units>
|
||||||
<JumpHistory Count="2" HistoryIndex="1">
|
<JumpHistory Count="0" HistoryIndex="-1"/>
|
||||||
<Position1>
|
|
||||||
<Filename Value="user_client_console.pas"/>
|
|
||||||
<Caret Line="8" Column="111" TopLine="1"/>
|
|
||||||
</Position1>
|
|
||||||
<Position2>
|
|
||||||
<Filename Value="user_client_console.pas"/>
|
|
||||||
<Caret Line="13" Column="1" TopLine="1"/>
|
|
||||||
</Position2>
|
|
||||||
</JumpHistory>
|
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
<CompilerOptions>
|
<CompilerOptions>
|
||||||
<Version Value="5"/>
|
<Version Value="5"/>
|
||||||
|
@ -144,8 +144,8 @@ const ADDRESS_MAP : array[TTransportType] of string = (
|
|||||||
'LIB:FileName=..\library_server\lib_server.dll;target=UserService',
|
'LIB:FileName=..\library_server\lib_server.dll;target=UserService',
|
||||||
//'TCP:Address=172.16.82.31;Port=1234;target=UserService',
|
//'TCP:Address=172.16.82.31;Port=1234;target=UserService',
|
||||||
'TCP:Address=127.0.0.1;Port=1234;target=UserService',
|
'TCP:Address=127.0.0.1;Port=1234;target=UserService',
|
||||||
//'http:Address=http://127.0.0.1:8080/wst/services/UserService/?format=soap'
|
'http:Address=http://127.0.0.1:8888/wst/services/lib_server/UserService'
|
||||||
'http:Address=http://127.0.0.1:8000/services/UserService'
|
//'http:Address=http://127.0.0.1:8000/services/UserService'
|
||||||
);
|
);
|
||||||
FORMAT_MAP : array[TFormatType] of string =( 'binary', 'soap', 'xmlrpc' );
|
FORMAT_MAP : array[TFormatType] of string =( 'binary', 'soap', 'xmlrpc' );
|
||||||
var
|
var
|
||||||
|
@ -220,9 +220,9 @@ end;
|
|||||||
initialization
|
initialization
|
||||||
FUserList := TObjectList.Create(True);
|
FUserList := TObjectList.Create(True);
|
||||||
FUserCursor := TObjectListCursor.Create(FUserList);
|
FUserCursor := TObjectListCursor.Create(FUserList);
|
||||||
if FileExists(sDATA_FILE_NAME) then
|
{if FileExists(sDATA_FILE_NAME) then
|
||||||
FillDataFromFile(sDATA_FILE_NAME)
|
FillDataFromFile(sDATA_FILE_NAME)
|
||||||
else
|
else}
|
||||||
FillSampleData();
|
FillSampleData();
|
||||||
|
|
||||||
finalization
|
finalization
|
||||||
|
@ -22,7 +22,8 @@ uses
|
|||||||
TestFrameWork,
|
TestFrameWork,
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
TypInfo,
|
TypInfo,
|
||||||
base_service_intf, server_service_intf;
|
base_service_intf, server_service_intf,
|
||||||
|
library_imp_utils;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
@ -103,6 +104,23 @@ type
|
|||||||
procedure POOLED_Discard();
|
procedure POOLED_Discard();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TwstModuleNotLoad }
|
||||||
|
|
||||||
|
TwstModuleNotLoad = class(TwstModule,IInterface,IwstModule)
|
||||||
|
protected
|
||||||
|
procedure Load(const ADoLoad : Boolean);override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TTest_TwstModuleManager }
|
||||||
|
|
||||||
|
TTest_TwstModuleManager = class(TTestCase)
|
||||||
|
published
|
||||||
|
function Get(const AFileName : string):IwstModule;
|
||||||
|
procedure Clear();
|
||||||
|
function GetCount() : PtrInt;
|
||||||
|
function GetItem(const AIndex : PtrInt) : IwstModule;
|
||||||
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
{ TTestClass }
|
{ TTestClass }
|
||||||
@ -585,19 +603,140 @@ begin
|
|||||||
CheckEquals(TSimpleFactoryItem_B,b.GetItemClass());
|
CheckEquals(TSimpleFactoryItem_B,b.GetItemClass());
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TwstModuleNotLoad }
|
||||||
|
|
||||||
|
procedure TwstModuleNotLoad.Load(const ADoLoad: Boolean);
|
||||||
|
begin
|
||||||
|
//;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TTest_TwstModuleManager }
|
||||||
|
|
||||||
|
function TTest_TwstModuleManager.Get(const AFileName: string): IwstModule;
|
||||||
|
const C = 10;
|
||||||
|
var
|
||||||
|
locObj : IwstModuleManager;
|
||||||
|
locModule : IwstModule;
|
||||||
|
i, j, k: Integer;
|
||||||
|
ok : Boolean;
|
||||||
|
locName : string;
|
||||||
|
begin
|
||||||
|
locObj := TwstModuleManager.Create(TwstModuleNotLoad);
|
||||||
|
|
||||||
|
for i := 0 to Pred(C) do begin
|
||||||
|
locObj.Get(Format('lib_%d',[i]));
|
||||||
|
end;
|
||||||
|
|
||||||
|
for i := 0 to Pred(C) do begin
|
||||||
|
ok := False;
|
||||||
|
locName := Format('lib_%d',[i]);
|
||||||
|
for j := 0 to Pred(locObj.GetCount()) do begin
|
||||||
|
locModule := locObj.GetItem(j);
|
||||||
|
if AnsiSameText(locName, locModule.GetFileName()) then begin
|
||||||
|
ok := True;
|
||||||
|
k := j + 1;
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Check(ok);
|
||||||
|
for j := k to Pred(locObj.GetCount()) do begin
|
||||||
|
locModule := locObj.GetItem(j);
|
||||||
|
if AnsiSameText(locName, locModule.GetFileName()) then begin
|
||||||
|
Check(False,'Duplicated items : ' + locName);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TTest_TwstModuleManager.Clear();
|
||||||
|
const C = 12;
|
||||||
|
var
|
||||||
|
locObj : IwstModuleManager;
|
||||||
|
i : Integer;
|
||||||
|
begin
|
||||||
|
locObj := TwstModuleManager.Create(TwstModuleNotLoad);
|
||||||
|
locObj.Clear();
|
||||||
|
CheckEquals(0,locObj.GetCount());
|
||||||
|
for i := 0 to Pred(C) do begin
|
||||||
|
locObj.Get(Format('lib_%d',[i]));
|
||||||
|
end;
|
||||||
|
CheckEquals(C,locObj.GetCount());
|
||||||
|
locObj.Clear();
|
||||||
|
CheckEquals(0,locObj.GetCount());
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TTest_TwstModuleManager.GetCount(): PtrInt;
|
||||||
|
const C = 10;
|
||||||
|
var
|
||||||
|
locObj : IwstModuleManager;
|
||||||
|
i : Integer;
|
||||||
|
begin
|
||||||
|
locObj := TwstModuleManager.Create(TwstModuleNotLoad);
|
||||||
|
CheckEquals(0,locObj.GetCount());
|
||||||
|
CheckEquals(0,locObj.GetCount());
|
||||||
|
for i := 0 to Pred(C) do begin
|
||||||
|
CheckEquals(i,locObj.GetCount(),'before Add');
|
||||||
|
locObj.Get(Format('lib_%d',[i]));
|
||||||
|
CheckEquals(i + 1,locObj.GetCount(),'after Add');
|
||||||
|
end;
|
||||||
|
CheckEquals(C,locObj.GetCount());
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TTest_TwstModuleManager.GetItem(const AIndex: PtrInt): IwstModule;
|
||||||
|
const C = 10;
|
||||||
|
var
|
||||||
|
locObj : IwstModuleManager;
|
||||||
|
locModule : IwstModule;
|
||||||
|
i : Integer;
|
||||||
|
ok : Boolean;
|
||||||
|
begin
|
||||||
|
locObj := TwstModuleManager.Create(TwstModuleNotLoad);
|
||||||
|
ok := False;
|
||||||
|
try
|
||||||
|
locObj.GetItem(0);
|
||||||
|
except
|
||||||
|
on e : Exception do begin
|
||||||
|
ok := True;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Check(ok);
|
||||||
|
|
||||||
|
ok := False;
|
||||||
|
try
|
||||||
|
locObj.GetItem(1);
|
||||||
|
except
|
||||||
|
on e : Exception do begin
|
||||||
|
ok := True;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Check(ok);
|
||||||
|
|
||||||
|
for i := 0 to Pred(C) do begin
|
||||||
|
locObj.Get(Format('lib_%d',[i]));
|
||||||
|
end;
|
||||||
|
|
||||||
|
for i := 0 to Pred(C) do begin
|
||||||
|
locModule := locObj.GetItem(i);
|
||||||
|
CheckEquals(Format('lib_%d',[i]), locModule.GetFileName());
|
||||||
|
end;
|
||||||
|
|
||||||
|
ok := False;
|
||||||
|
try
|
||||||
|
locObj.GetItem(C + 1);
|
||||||
|
except
|
||||||
|
on e : Exception do begin
|
||||||
|
ok := True;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Check(ok);
|
||||||
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
{$IFDEF FPC}
|
RegisterTest('Utilities',TTest_TIntfPool.Suite);
|
||||||
RegisterTest(TTest_TIntfPool);
|
RegisterTest('Utilities',TTest_TSimpleItemFactoryEx.Suite);
|
||||||
RegisterTest(TTest_TSimpleItemFactoryEx);
|
RegisterTest('Utilities',TTest_TImplementationFactory.Suite);
|
||||||
RegisterTest(TTest_TImplementationFactory);
|
RegisterTest('Utilities',TTest_TIntfPoolItem.Suite);
|
||||||
RegisterTest(TTest_TIntfPoolItem);
|
RegisterTest('Utilities',TTest_TImplementationFactory.Suite);
|
||||||
RegisterTest(TTest_TImplementationFactory);
|
RegisterTest('Utilities',TTest_TwstModuleManager.Suite);
|
||||||
{$ELSE}
|
|
||||||
RegisterTest(TTest_TIntfPool.Suite);
|
|
||||||
RegisterTest(TTest_TSimpleItemFactoryEx.Suite);
|
|
||||||
RegisterTest(TTest_TImplementationFactory.Suite);
|
|
||||||
RegisterTest(TTest_TIntfPoolItem.Suite);
|
|
||||||
RegisterTest(TTest_TImplementationFactory.Suite);
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<MainUnit Value="0"/>
|
<MainUnit Value="0"/>
|
||||||
<IconPath Value="./"/>
|
<IconPath Value="./"/>
|
||||||
<TargetFileExt Value=".exe"/>
|
<TargetFileExt Value=".exe"/>
|
||||||
<ActiveEditorIndexAtStart Value="1"/>
|
<ActiveEditorIndexAtStart Value="16"/>
|
||||||
</General>
|
</General>
|
||||||
<PublishOptions>
|
<PublishOptions>
|
||||||
<Version Value="2"/>
|
<Version Value="2"/>
|
||||||
@ -27,7 +27,7 @@
|
|||||||
<PackageName Value="FPCUnitTestRunner"/>
|
<PackageName Value="FPCUnitTestRunner"/>
|
||||||
</Item1>
|
</Item1>
|
||||||
</RequiredPackages>
|
</RequiredPackages>
|
||||||
<Units Count="72">
|
<Units Count="74">
|
||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="wst_test_suite.lpr"/>
|
<Filename Value="wst_test_suite.lpr"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
@ -251,7 +251,7 @@
|
|||||||
<CursorPos X="3" Y="174"/>
|
<CursorPos X="3" Y="174"/>
|
||||||
<TopLine Value="165"/>
|
<TopLine Value="165"/>
|
||||||
<EditorIndex Value="9"/>
|
<EditorIndex Value="9"/>
|
||||||
<UsageCount Value="45"/>
|
<UsageCount Value="46"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit25>
|
</Unit25>
|
||||||
<Unit26>
|
<Unit26>
|
||||||
@ -318,10 +318,10 @@
|
|||||||
<Filename Value="test_utilities.pas"/>
|
<Filename Value="test_utilities.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="test_utilities"/>
|
<UnitName Value="test_utilities"/>
|
||||||
<CursorPos X="40" Y="64"/>
|
<CursorPos X="1" Y="1"/>
|
||||||
<TopLine Value="58"/>
|
<TopLine Value="49"/>
|
||||||
<EditorIndex Value="15"/>
|
<EditorIndex Value="15"/>
|
||||||
<UsageCount Value="193"/>
|
<UsageCount Value="195"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit35>
|
</Unit35>
|
||||||
<Unit36>
|
<Unit36>
|
||||||
@ -414,7 +414,7 @@
|
|||||||
<UnitName Value="server_service_xmlrpc"/>
|
<UnitName Value="server_service_xmlrpc"/>
|
||||||
<CursorPos X="38" Y="33"/>
|
<CursorPos X="38" Y="33"/>
|
||||||
<TopLine Value="27"/>
|
<TopLine Value="27"/>
|
||||||
<UsageCount Value="147"/>
|
<UsageCount Value="149"/>
|
||||||
</Unit46>
|
</Unit46>
|
||||||
<Unit47>
|
<Unit47>
|
||||||
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\xmlread.pp"/>
|
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\xmlread.pp"/>
|
||||||
@ -450,7 +450,7 @@
|
|||||||
<CursorPos X="50" Y="24"/>
|
<CursorPos X="50" Y="24"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="4"/>
|
<EditorIndex Value="4"/>
|
||||||
<UsageCount Value="125"/>
|
<UsageCount Value="127"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit51>
|
</Unit51>
|
||||||
<Unit52>
|
<Unit52>
|
||||||
@ -459,7 +459,7 @@
|
|||||||
<CursorPos X="17" Y="190"/>
|
<CursorPos X="17" Y="190"/>
|
||||||
<TopLine Value="188"/>
|
<TopLine Value="188"/>
|
||||||
<EditorIndex Value="6"/>
|
<EditorIndex Value="6"/>
|
||||||
<UsageCount Value="29"/>
|
<UsageCount Value="30"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit52>
|
</Unit52>
|
||||||
<Unit53>
|
<Unit53>
|
||||||
@ -468,7 +468,7 @@
|
|||||||
<CursorPos X="98" Y="94"/>
|
<CursorPos X="98" Y="94"/>
|
||||||
<TopLine Value="71"/>
|
<TopLine Value="71"/>
|
||||||
<EditorIndex Value="8"/>
|
<EditorIndex Value="8"/>
|
||||||
<UsageCount Value="21"/>
|
<UsageCount Value="22"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit53>
|
</Unit53>
|
||||||
<Unit54>
|
<Unit54>
|
||||||
@ -504,7 +504,7 @@
|
|||||||
<CursorPos X="14" Y="91"/>
|
<CursorPos X="14" Y="91"/>
|
||||||
<TopLine Value="77"/>
|
<TopLine Value="77"/>
|
||||||
<EditorIndex Value="7"/>
|
<EditorIndex Value="7"/>
|
||||||
<UsageCount Value="28"/>
|
<UsageCount Value="29"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit58>
|
</Unit58>
|
||||||
<Unit59>
|
<Unit59>
|
||||||
@ -519,7 +519,7 @@
|
|||||||
<UnitName Value="wsdl_generator"/>
|
<UnitName Value="wsdl_generator"/>
|
||||||
<CursorPos X="27" Y="146"/>
|
<CursorPos X="27" Y="146"/>
|
||||||
<TopLine Value="124"/>
|
<TopLine Value="124"/>
|
||||||
<UsageCount Value="105"/>
|
<UsageCount Value="107"/>
|
||||||
</Unit60>
|
</Unit60>
|
||||||
<Unit61>
|
<Unit61>
|
||||||
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\fcl-xml\src\xmlread.pp"/>
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\fcl-xml\src\xmlread.pp"/>
|
||||||
@ -548,7 +548,7 @@
|
|||||||
<CursorPos X="3" Y="81"/>
|
<CursorPos X="3" Y="81"/>
|
||||||
<TopLine Value="261"/>
|
<TopLine Value="261"/>
|
||||||
<EditorIndex Value="2"/>
|
<EditorIndex Value="2"/>
|
||||||
<UsageCount Value="88"/>
|
<UsageCount Value="90"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit64>
|
</Unit64>
|
||||||
<Unit65>
|
<Unit65>
|
||||||
@ -557,7 +557,7 @@
|
|||||||
<UnitName Value="xsd_consts"/>
|
<UnitName Value="xsd_consts"/>
|
||||||
<CursorPos X="8" Y="78"/>
|
<CursorPos X="8" Y="78"/>
|
||||||
<TopLine Value="51"/>
|
<TopLine Value="51"/>
|
||||||
<UsageCount Value="87"/>
|
<UsageCount Value="89"/>
|
||||||
</Unit65>
|
</Unit65>
|
||||||
<Unit66>
|
<Unit66>
|
||||||
<Filename Value="..\..\ws_helper\wsdl_parser.pas"/>
|
<Filename Value="..\..\ws_helper\wsdl_parser.pas"/>
|
||||||
@ -566,7 +566,7 @@
|
|||||||
<CursorPos X="28" Y="845"/>
|
<CursorPos X="28" Y="845"/>
|
||||||
<TopLine Value="835"/>
|
<TopLine Value="835"/>
|
||||||
<EditorIndex Value="5"/>
|
<EditorIndex Value="5"/>
|
||||||
<UsageCount Value="20"/>
|
<UsageCount Value="22"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit66>
|
</Unit66>
|
||||||
<Unit67>
|
<Unit67>
|
||||||
@ -576,7 +576,7 @@
|
|||||||
<CursorPos X="58" Y="112"/>
|
<CursorPos X="58" Y="112"/>
|
||||||
<TopLine Value="99"/>
|
<TopLine Value="99"/>
|
||||||
<EditorIndex Value="11"/>
|
<EditorIndex Value="11"/>
|
||||||
<UsageCount Value="73"/>
|
<UsageCount Value="75"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit67>
|
</Unit67>
|
||||||
<Unit68>
|
<Unit68>
|
||||||
@ -585,7 +585,7 @@
|
|||||||
<CursorPos X="3" Y="265"/>
|
<CursorPos X="3" Y="265"/>
|
||||||
<TopLine Value="296"/>
|
<TopLine Value="296"/>
|
||||||
<EditorIndex Value="12"/>
|
<EditorIndex Value="12"/>
|
||||||
<UsageCount Value="37"/>
|
<UsageCount Value="38"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit68>
|
</Unit68>
|
||||||
<Unit69>
|
<Unit69>
|
||||||
@ -608,16 +608,123 @@
|
|||||||
<TopLine Value="586"/>
|
<TopLine Value="586"/>
|
||||||
<UsageCount Value="16"/>
|
<UsageCount Value="16"/>
|
||||||
</Unit71>
|
</Unit71>
|
||||||
|
<Unit72>
|
||||||
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
|
<UnitName Value="library_imp_utils"/>
|
||||||
|
<CursorPos X="2" Y="31"/>
|
||||||
|
<TopLine Value="19"/>
|
||||||
|
<EditorIndex Value="16"/>
|
||||||
|
<UsageCount Value="11"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit72>
|
||||||
|
<Unit73>
|
||||||
|
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\rtl\win\dynlibs.inc"/>
|
||||||
|
<CursorPos X="1" Y="26"/>
|
||||||
|
<TopLine Value="9"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit73>
|
||||||
</Units>
|
</Units>
|
||||||
<JumpHistory Count="2" HistoryIndex="1">
|
<JumpHistory Count="25" HistoryIndex="24">
|
||||||
<Position1>
|
<Position1>
|
||||||
<Filename Value="..\..\base_soap_formatter.pas"/>
|
<Filename Value="test_utilities.pas"/>
|
||||||
<Caret Line="1481" Column="23" TopLine="1470"/>
|
<Caret Line="26" Column="19" TopLine="1"/>
|
||||||
</Position1>
|
</Position1>
|
||||||
<Position2>
|
<Position2>
|
||||||
<Filename Value="..\..\base_soap_formatter.pas"/>
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
<Caret Line="127" Column="61" TopLine="115"/>
|
<Caret Line="72" Column="52" TopLine="48"/>
|
||||||
</Position2>
|
</Position2>
|
||||||
|
<Position3>
|
||||||
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
|
<Caret Line="184" Column="38" TopLine="179"/>
|
||||||
|
</Position3>
|
||||||
|
<Position4>
|
||||||
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
|
<Caret Line="72" Column="24" TopLine="72"/>
|
||||||
|
</Position4>
|
||||||
|
<Position5>
|
||||||
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
|
<Caret Line="172" Column="23" TopLine="170"/>
|
||||||
|
</Position5>
|
||||||
|
<Position6>
|
||||||
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
|
<Caret Line="84" Column="1" TopLine="63"/>
|
||||||
|
</Position6>
|
||||||
|
<Position7>
|
||||||
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
|
<Caret Line="28" Column="1" TopLine="12"/>
|
||||||
|
</Position7>
|
||||||
|
<Position8>
|
||||||
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
|
<Caret Line="50" Column="25" TopLine="35"/>
|
||||||
|
</Position8>
|
||||||
|
<Position9>
|
||||||
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
|
<Caret Line="84" Column="15" TopLine="64"/>
|
||||||
|
</Position9>
|
||||||
|
<Position10>
|
||||||
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
|
<Caret Line="11" Column="5" TopLine="10"/>
|
||||||
|
</Position10>
|
||||||
|
<Position11>
|
||||||
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
|
<Caret Line="185" Column="21" TopLine="170"/>
|
||||||
|
</Position11>
|
||||||
|
<Position12>
|
||||||
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
|
<Caret Line="198" Column="56" TopLine="179"/>
|
||||||
|
</Position12>
|
||||||
|
<Position13>
|
||||||
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
|
<Caret Line="90" Column="25" TopLine="62"/>
|
||||||
|
</Position13>
|
||||||
|
<Position14>
|
||||||
|
<Filename Value="test_utilities.pas"/>
|
||||||
|
<Caret Line="107" Column="35" TopLine="93"/>
|
||||||
|
</Position14>
|
||||||
|
<Position15>
|
||||||
|
<Filename Value="test_utilities.pas"/>
|
||||||
|
<Caret Line="109" Column="3" TopLine="107"/>
|
||||||
|
</Position15>
|
||||||
|
<Position16>
|
||||||
|
<Filename Value="test_utilities.pas"/>
|
||||||
|
<Caret Line="116" Column="3" TopLine="114"/>
|
||||||
|
</Position16>
|
||||||
|
<Position17>
|
||||||
|
<Filename Value="test_utilities.pas"/>
|
||||||
|
<Caret Line="638" Column="1" TopLine="610"/>
|
||||||
|
</Position17>
|
||||||
|
<Position18>
|
||||||
|
<Filename Value="test_utilities.pas"/>
|
||||||
|
<Caret Line="633" Column="26" TopLine="610"/>
|
||||||
|
</Position18>
|
||||||
|
<Position19>
|
||||||
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
|
<Caret Line="94" Column="62" TopLine="87"/>
|
||||||
|
</Position19>
|
||||||
|
<Position20>
|
||||||
|
<Filename Value="test_utilities.pas"/>
|
||||||
|
<Caret Line="619" Column="1" TopLine="585"/>
|
||||||
|
</Position20>
|
||||||
|
<Position21>
|
||||||
|
<Filename Value="test_utilities.pas"/>
|
||||||
|
<Caret Line="652" Column="5" TopLine="618"/>
|
||||||
|
</Position21>
|
||||||
|
<Position22>
|
||||||
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
|
<Caret Line="151" Column="4" TopLine="140"/>
|
||||||
|
</Position22>
|
||||||
|
<Position23>
|
||||||
|
<Filename Value="test_utilities.pas"/>
|
||||||
|
<Caret Line="619" Column="1" TopLine="585"/>
|
||||||
|
</Position23>
|
||||||
|
<Position24>
|
||||||
|
<Filename Value="test_utilities.pas"/>
|
||||||
|
<Caret Line="647" Column="9" TopLine="623"/>
|
||||||
|
</Position24>
|
||||||
|
<Position25>
|
||||||
|
<Filename Value="..\..\library_imp_utils.pas"/>
|
||||||
|
<Caret Line="51" Column="18" TopLine="40"/>
|
||||||
|
</Position25>
|
||||||
</JumpHistory>
|
</JumpHistory>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
<CompilerOptions>
|
<CompilerOptions>
|
||||||
|
Reference in New Issue
Block a user