library protocol added ( Hosting services into dynamic library DLL/SO).

connexion string format is
  lib:FileName=<A File Name>;target=<the target service>

example :lib:FileName=C:\Programmes\lazarus\wst\tests\library\obj\lib_server.dll;target=ICalculator

todo : test on Linux, write Documentation in the Wiki.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@32 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
inoussa
2006-10-29 01:50:19 +00:00
parent 35695810f7
commit e1f3f1041c
19 changed files with 1272 additions and 201 deletions

View File

@ -0,0 +1,87 @@
{
This file is part of the Web Service Toolkit
Copyright (c) 2006 by Inoussa OUEDRAOGO
This file is provide under modified LGPL licence
( the files COPYING.modifiedLGPL and COPYING.LGPL).
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
unit library_base_intf;
{$mode objfpc}{$H+}
interface
uses base_service_intf;
const
RET_OK = 0;
RET_FALSE = 1;
WST_LIB_HANDLER = 'wstHandleRequest';
type
EwstCheckException = class(EServiceException)
private
FReturnCode: Integer;
public
property ReturnCode : Integer read FReturnCode write FReturnCode;
end;
IwstStream = interface
['{95700F89-3E36-4678-AD84-347162E39288}']
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;
end;
TwstLibraryHandlerFunction =
function(
ARequestBuffer : IwstStream;
AErrorBuffer : Pointer;
var AErrorBufferLen : LongInt
):LongInt;
procedure wstCheck(const AReturn : LongInt);overload;
procedure wstCheck(const AReturn : LongInt; const AMsg : string);overload;
implementation
procedure wstCheck(const AReturn : LongInt);
var
e : EwstCheckException;
begin
if ( AReturn <> RET_OK ) then begin
e := EwstCheckException.CreateFmt('wst Check Exception , return = %d',[AReturn]);
e.ReturnCode := AReturn;
raise e;
end;
end;
procedure wstCheck(const AReturn : LongInt; const AMsg : string);
var
e : EwstCheckException;
begin
if ( AReturn <> RET_OK ) then begin
e := EwstCheckException.Create(AMsg);
e.ReturnCode := AReturn;
raise e;
end;
end;
end.

View File

@ -0,0 +1,170 @@
unit library_imp_utils;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
type
IwstModule = interface
['{A62A9A71-727E-47AD-9B84-0F7CA0AE51D5}']
function GetFileName():string;
function GetProc(const AProcName : string):Pointer;
end;
IwstModuleManager = interface
['{0A49D315-FF3E-40CD-BCA0-F958BCD5C57F}']
function Get(const AFileName : string):IwstModule;
procedure Clear();
end;
var
LibraryManager : IwstModuleManager = nil;
implementation
uses DynLibs;
type
{ TwstModule }
TwstModule = class(TInterfacedObject,IwstModule)
private
FFileName : string;
FHandle : TLibHandle;
private
procedure Load(const ADoLoad : Boolean);
protected
function GetFileName():string;
function GetProc(const AProcName : string):Pointer;
public
constructor Create(const AFileName : string);
destructor Destroy();override;
end;
{ TwstModuleManager }
TwstModuleManager = class(TInterfacedObject,IwstModuleManager)
private
FList : IInterfaceList;
private
function Load(const AFileName : string):IwstModule;
function GetItem(const AIndex : Integer):IwstModule;
function IndexOf(const AFileName : string):Integer;
protected
function Get(const AFileName : string):IwstModule;
procedure Clear();
public
constructor Create();
destructor Destroy();override;
end;
procedure TwstModule.Load(const ADoLoad : Boolean);
begin
if ADoLoad then begin
if ( FHandle = NilHandle ) then begin
FHandle := LoadLibrary(FFileName);
if ( FHandle = NilHandle ) then
raise Exception.CreateFmt('Error while loading : "%s".',[FFileName]);
end;
end else begin
if ( FHandle <> NilHandle ) then begin
FreeLibrary(FHandle);
FHandle := NilHandle;
end;
end;
end;
function TwstModule.GetFileName(): string;
begin
Result := FFileName;
end;
function TwstModule.GetProc(const AProcName: string): Pointer;
begin
Result := GetProcAddress(FHandle,AProcName);
if not Assigned(Result) then
raise Exception.CreateFmt('Procedure "%s" not found in this module( "%s" ).',[AProcName,FFileName]);
end;
constructor TwstModule.Create(const AFileName: string);
begin
if not FileExists(AFileName) then
raise Exception.CreateFmt('File not found : "%s".',[AFileName]);
FHandle := NilHandle;
FFileName := AFileName;
Load(True);
end;
destructor TwstModule.Destroy();
begin
Load(False);
inherited Destroy();
end;
{ TwstModuleManager }
function TwstModuleManager.Get(const AFileName: string): IwstModule;
var
i : Integer;
begin
i := IndexOf(AFileName);
if ( i < 0 ) then
Result := Load(AFileName)
else
Result := GetItem(i);
end;
procedure TwstModuleManager.Clear();
begin
FList.Clear();
end;
function TwstModuleManager.Load(const AFileName: string): IwstModule;
begin
Result := TwstModule.Create(AFileName);
end;
function TwstModuleManager.GetItem(const AIndex: Integer): IwstModule;
begin
Result := FList[AIndex] as IwstModule;
end;
function TwstModuleManager.IndexOf(const AFileName: string): Integer;
begin
for Result := 0 to Pred(FList.Count) do begin
if AnsiSameStr(AFileName,(FList[Result] as IwstModule).GetFileName()) then
Exit;
end;
Result := -1;
end;
constructor TwstModuleManager.Create();
begin
inherited;
FList := TInterfaceList.Create();
end;
destructor TwstModuleManager.Destroy();
begin
FList := nil;
inherited Destroy();
end;
procedure InitLibraryManager();
begin
LibraryManager := TwstModuleManager.Create();
end;
initialization
InitLibraryManager();
finalization
LibraryManager := nil;
end.

View File

@ -0,0 +1,245 @@
{
This file is part of the Web Service Toolkit
Copyright (c) 2006 by Inoussa OUEDRAOGO
This file is provide under modified LGPL licence
( the files COPYING.modifiedLGPL and COPYING.LGPL).
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
unit library_protocol;
{$mode objfpc}{$H+}
//{$DEFINE WST_DBG}
interface
uses
Classes, SysUtils,{$IFDEF WST_DBG}Dialogs,{$ENDIF}
service_intf, imp_utils, base_service_intf, library_base_intf,
library_imp_utils;
Const
sTRANSPORT_NAME = 'LIB';
Type
{$M+}
{ TLIBTransport }
TLIBTransport = class(TSimpleFactoryItem,ITransport)
Private
FPropMngr : IPropertyManager;
FModule : IwstModule;
FHandler : TwstLibraryHandlerFunction;
private
FContentType: string;
FFileName: string;
FTarget: string;
private
procedure SetFileName(const AValue: string);
procedure LoadModule();
public
constructor Create();override;
destructor Destroy();override;
function GetPropertyManager():IPropertyManager;
procedure SendAndReceive(ARequest,AResponse:TStream);
published
property ContentType : string read FContentType write FContentType;
property Target : string read FTarget write FTarget;
property FileName : string read FFileName write SetFileName;
end;
{$M+}
procedure LIB_Register_Transport();
implementation
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 }
procedure TLIBTransport.SetFileName(const AValue: string);
begin
FFileName := AValue;
if Assigned(FModule) and ( not AnsiSameStr(FFileName,FModule.GetFileName()) ) then begin
FHandler := nil;
FModule := nil;
end;
end;
procedure TLIBTransport.LoadModule();
begin
if ( FModule = nil ) then begin
FModule := LibraryManager.Get(FFileName);
FHandler := TwstLibraryHandlerFunction(FModule.GetProc(WST_LIB_HANDLER));
end;
end;
constructor TLIBTransport.Create();
begin
inherited Create();
FPropMngr := TPublishedPropertyManager.Create(Self);
FModule := nil;
FHandler := nil
end;
destructor TLIBTransport.Destroy();
begin
FPropMngr := Nil;
FModule := nil;
FHandler := nil;
inherited Destroy();
end;
function TLIBTransport.GetPropertyManager(): IPropertyManager;
begin
Result := FPropMngr;
end;
const MAX_ERR_LEN = 500;
procedure TLIBTransport.SendAndReceive(ARequest, AResponse: TStream);
Var
wrtr : IDataStore;
buffStream : TMemoryStream;
strBuff : string;
intfBuffer : IwstStream;
bl : LongInt;
{$IFDEF WST_DBG}
s : string;
i : Int64;
{$ENDIF WST_DBG}
begin
LoadModule();
buffStream := TMemoryStream.Create();
try
wrtr := CreateBinaryWriter(buffStream);
wrtr.WriteInt32S(0);
wrtr.WriteStr(Target);
wrtr.WriteStr(ContentType);
SetLength(strBuff,ARequest.Size);
ARequest.Position := 0;
ARequest.Read(strBuff[1],Length(strBuff));
wrtr.WriteStr(strBuff);
buffStream.Position := 0;
wrtr.WriteInt32S(buffStream.Size-4);
buffStream.Position := 0;
intfBuffer := TwstStream.Create(buffStream);
bl := MAX_ERR_LEN;
strBuff := StringOfChar(#0,bl);
if ( FHandler(intfBuffer,Pointer(strBuff),bl) <> RET_OK ) then
raise Exception.Create(strBuff);
buffStream.Position := 0;
AResponse.Size := 0;
AResponse.CopyFrom(buffStream,0);
AResponse.Position := 0;
{$IFDEF WST_DBG}
i := AResponse.Position;
SetLength(s,AResponse.Size);
AResponse.Read(s[1],AResponse.Size);
if IsConsole then
WriteLn(s)
else
ShowMessage(s);
{$ENDIF WST_DBG}
finally
buffStream.Free();
end;
end;
procedure LIB_Register_Transport();
begin
GetTransportRegistry().Register(sTRANSPORT_NAME,TSimpleItemFactory.Create(TLIBTransport) as IItemFactory);
end;
end.

View File

@ -0,0 +1,121 @@
{
This file is part of the Web Service Toolkit
Copyright (c) 2006 by Inoussa OUEDRAOGO
This file is provide under modified LGPL licence
( the files COPYING.modifiedLGPL and COPYING.LGPL).
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
unit library_server_intf;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils,
library_base_intf;
function wstHandleRequest(
ARequestBuffer : IwstStream;
AErrorBuffer : Pointer;
var AErrorBufferLen : LongInt
):LongInt;
implementation
uses base_service_intf, server_service_intf, server_service_imputils, binary_streamer;
function wstHandleRequest(
ARequestBuffer : IwstStream;
AErrorBuffer : Pointer;
var AErrorBufferLen : LongInt
):LongInt;
procedure CopyErrMsg(const AMsg : string);
var
j,m : Integer;
begin
m := AErrorBufferLen;
j := Length(AMsg);
if ( j > 0 ) then begin
if ( j > m ) then
j := m;
try
Move(AMsg[1],AErrorBuffer^,j);
except
end;
end;
end;
Var
buff, trgt,ctntyp : string;
rqst : IRequestBuffer;
rdr : IDataStoreReader;
inStream, bufStream : TMemoryStream;
bs, bytesCount : LongWord;
begin
Result := RET_FALSE;
try
inStream := nil;
bufStream := nil;
if Assigned(ARequestBuffer) then begin
wstCheck(ARequestBuffer.GetSize(bs));
if ( bs > 0 ) then begin
try
inStream := TMemoryStream.Create();
bufStream := TMemoryStream.Create();
bufStream.Size := bs;
wstCheck(ARequestBuffer.SetPosition(0));
wstCheck(ARequestBuffer.Read(bufStream.Memory,bs,bytesCount));
if ( bs <> bytesCount ) then
wstCheck(RET_FALSE,'Invalid buffer operation (READ)');
wstCheck(ARequestBuffer.SetSize(0));
bufStream.Position := 0;
rdr := CreateBinaryReader(bufStream);
if ( rdr.ReadInt32S() <> ( bs - 4 ) ) then
wstCheck(RET_FALSE,'Invalid buffer.');
trgt := rdr.ReadStr();
ctntyp := rdr.ReadStr();
buff := rdr.ReadStr();
rdr := nil;
bufStream.Size := 0;
bufStream.Position := 0;
inStream.Write(buff[1],Length(buff));
SetLength(buff,0);
inStream.Position := 0;
rqst := TRequestBuffer.Create(trgt,ctntyp,inStream,bufStream);
HandleServiceRequest(rqst);
bs := bufStream.Size;
wstCheck(ARequestBuffer.SetSize(bs));
wstCheck(ARequestBuffer.SetPosition(0));
wstCheck(ARequestBuffer.Write(bufStream.Memory,bs,bytesCount));
if ( bs <> bytesCount ) then
wstCheck(RET_FALSE,'Invalid buffer operation (WRITE)');
Result := RET_OK;
finally
bufStream.Free();
inStream.Free();
end;
end;
end;
except
on e : EwstCheckException do begin
Result := e.ReturnCode;
CopyErrMsg(e.Message);
end;
on e : Exception do begin
Result := RET_FALSE;
CopyErrMsg(e.Message);
end else begin
Result := RET_FALSE;
end;
end;
end;
end.

View File

@ -166,6 +166,9 @@ begin
TMemoryStream(AResponse).SaveToFile('log.log');
SetLength(s,AResponse.Size);
Move(TMemoryStream(AResponse).Memory^,s[1],Length(s));
if IsConsole then
WriteLn(s)
else
ShowMessage(s);
{$ENDIF}
end;

View File

@ -7,39 +7,41 @@ object fmain: Tfmain
VertScrollBar.Page = 299
ActiveControl = edtA
Caption = '"calculator" service test'
ClientHeight = 300
ClientWidth = 528
OnCreate = FormCreate
object Label1: TLabel
Left = 16
Height = 14
Height = 18
Top = 48
Width = 49
Width = 64
Caption = 'Param "A"'
Color = clNone
ParentColor = False
end
object Label2: TLabel
Left = 17
Height = 14
Height = 18
Top = 80
Width = 48
Width = 64
Caption = 'Param "B"'
Color = clNone
ParentColor = False
end
object Label3: TLabel
Left = 240
Height = 14
Height = 18
Top = 52
Width = 35
Width = 45
Caption = 'Format'
Color = clNone
ParentColor = False
end
object Label4: TLabel
Left = 16
Height = 14
Height = 18
Top = 8
Width = 40
Width = 49
Caption = 'Address'
Color = clNone
ParentColor = False

View File

@ -3,32 +3,33 @@
LazarusResources.Add('Tfmain','FORMDATA',[
'TPF0'#6'Tfmain'#5'fmain'#4'Left'#3#13#1#6'Height'#3','#1#3'Top'#3#234#0#5'Wi'
+'dth'#3#16#2#18'HorzScrollBar.Page'#3#15#2#18'VertScrollBar.Page'#3'+'#1#13
+'ActiveControl'#7#4'edtA'#7'Caption'#6#25'"calculator" service test'#8'OnCre'
+'ate'#7#10'FormCreate'#0#6'TLabel'#6'Label1'#4'Left'#2#16#6'Height'#2#14#3'T'
+'op'#2'0'#5'Width'#2'1'#7'Caption'#6#9'Param "A"'#5'Color'#7#6'clNone'#11'Pa'
+'rentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#17#6'Height'#2#14#3'Top'#2'P'
+#5'Width'#2'0'#7'Caption'#6#9'Param "B"'#5'Color'#7#6'clNone'#11'ParentColor'
+#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#240#0#6'Height'#2#14#3'Top'#2'4'#5'Widt'
+'h'#2'#'#7'Caption'#6#6'Format'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6
+'TLabel'#6'Label4'#4'Left'#2#16#6'Height'#2#14#3'Top'#2#8#5'Width'#2'('#7'Ca'
+'ption'#6#7'Address'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#5'TEdit'#4'e'
+'dtA'#4'Left'#2'P'#6'Height'#2#23#3'Top'#2'0'#5'Width'#2'P'#8'TabOrder'#2#0#4
+'Text'#6#1'5'#0#0#5'TEdit'#4'edtB'#4'Left'#2'P'#6'Height'#2#23#3'Top'#2'P'#5
+'Width'#2'P'#8'TabOrder'#2#1#4'Text'#6#1'2'#0#0#7'TButton'#7'btnExec'#4'Left'
+#3#128#1#6'Height'#2#25#3'Top'#2#8#5'Width'#3#128#0#25'BorderSpacing.InnerBo'
+'rder'#2#4#7'Caption'#6#7'Execute'#7'OnClick'#7#12'btnExecClick'#8'TabOrder'
+#2#2#0#0#5'TMemo'#6'mmoLog'#6'Height'#3#180#0#3'Top'#2'x'#5'Width'#3#16#2#5
+'Align'#7#8'alBottom'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'
+#0#12'Font.CharSet'#7#12'ANSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.H'
+'eight'#2#237#9'Font.Name'#6#11'Courier New'#10'Font.Pitch'#7#7'fpFixed'#13
+'Lines.Strings'#1#6#0#0#10'ScrollBars'#7#6'ssBoth'#8'TabOrder'#2#3#0#0#5'TEd'
+'it'#9'edtFormat'#4'Left'#3' '#1#6'Height'#2#23#3'Top'#2'2'#5'Width'#2'P'#8
+'TabOrder'#2#4#4'Text'#6#4'SOAP'#0#0#7'TButton'#7'btnInit'#4'Left'#3#128#1#6
+'Height'#2#25#3'Top'#2'0'#5'Width'#2'K'#25'BorderSpacing.InnerBorder'#2#4#7
+'Caption'#6#8'Init Obj'#7'OnClick'#7#12'btnInitClick'#8'TabOrder'#2#5#0#0#7
+'TButton'#11'btnClearLog'#4'Left'#3#128#1#6'Height'#2#25#3'Top'#2'P'#5'Width'
+#2'K'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#9'Clear Log'#7'OnClick'
+#7#16'btnClearLogClick'#8'TabOrder'#2#6#0#0#5'TEdit'#10'edtAddress'#4'Left'#2
+'P'#6'Height'#2#23#3'Top'#2#11#5'Width'#3' '#1#8'TabOrder'#2#7#4'Text'#6'7ht'
+'tp:Address=http://127.0.0.1:8000/services/ICalculator'#0#0#0
+'ActiveControl'#7#4'edtA'#7'Caption'#6#25'"calculator" service test'#12'Clie'
+'ntHeight'#3','#1#11'ClientWidth'#3#16#2#8'OnCreate'#7#10'FormCreate'#0#6'TL'
+'abel'#6'Label1'#4'Left'#2#16#6'Height'#2#18#3'Top'#2'0'#5'Width'#2'@'#7'Cap'
+'tion'#6#9'Param "A"'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#6
+'Label2'#4'Left'#2#17#6'Height'#2#18#3'Top'#2'P'#5'Width'#2'@'#7'Caption'#6#9
+'Param "B"'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4
+'Left'#3#240#0#6'Height'#2#18#3'Top'#2'4'#5'Width'#2'-'#7'Caption'#6#6'Forma'
+'t'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#2
+#16#6'Height'#2#18#3'Top'#2#8#5'Width'#2'1'#7'Caption'#6#7'Address'#5'Color'
+#7#6'clNone'#11'ParentColor'#8#0#0#5'TEdit'#4'edtA'#4'Left'#2'P'#6'Height'#2
+#23#3'Top'#2'0'#5'Width'#2'P'#8'TabOrder'#2#0#4'Text'#6#1'5'#0#0#5'TEdit'#4
+'edtB'#4'Left'#2'P'#6'Height'#2#23#3'Top'#2'P'#5'Width'#2'P'#8'TabOrder'#2#1
+#4'Text'#6#1'2'#0#0#7'TButton'#7'btnExec'#4'Left'#3#128#1#6'Height'#2#25#3'T'
+'op'#2#8#5'Width'#3#128#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#7'E'
+'xecute'#7'OnClick'#7#12'btnExecClick'#8'TabOrder'#2#2#0#0#5'TMemo'#6'mmoLog'
+#6'Height'#3#180#0#3'Top'#2'x'#5'Width'#3#16#2#5'Align'#7#8'alBottom'#7'Anch'
+'ors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#12'Font.CharSet'#7#12'A'
+'NSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#237#9'Font.Name'
+#6#11'Courier New'#10'Font.Pitch'#7#7'fpFixed'#13'Lines.Strings'#1#6#0#0#10
+'ScrollBars'#7#6'ssBoth'#8'TabOrder'#2#3#0#0#5'TEdit'#9'edtFormat'#4'Left'#3
+' '#1#6'Height'#2#23#3'Top'#2'2'#5'Width'#2'P'#8'TabOrder'#2#4#4'Text'#6#4'S'
+'OAP'#0#0#7'TButton'#7'btnInit'#4'Left'#3#128#1#6'Height'#2#25#3'Top'#2'0'#5
+'Width'#2'K'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#8'Init Obj'#7'On'
+'Click'#7#12'btnInitClick'#8'TabOrder'#2#5#0#0#7'TButton'#11'btnClearLog'#4
+'Left'#3#128#1#6'Height'#2#25#3'Top'#2'P'#5'Width'#2'K'#25'BorderSpacing.Inn'
+'erBorder'#2#4#7'Caption'#6#9'Clear Log'#7'OnClick'#7#16'btnClearLogClick'#8
+'TabOrder'#2#6#0#0#5'TEdit'#10'edtAddress'#4'Left'#2'P'#6'Height'#2#23#3'Top'
+#2#11#5'Width'#3' '#1#8'TabOrder'#2#7#4'Text'#6'7http:Address=http://127.0.0'
+'.1:8000/services/ICalculator'#0#0#0
]);

View File

@ -42,6 +42,7 @@ implementation
uses TypInfo, base_service_intf, soap_formatter, binary_formatter,
ics_tcp_protocol, ics_http_protocol,
//synapse_http_protocol,
library_protocol,
service_intf;
{ Tfmain }
@ -127,6 +128,7 @@ begin
FObj := Nil;
//ICS_RegisterTCP_Transport();
ICS_RegisterHTTP_Transport();
LIB_Register_Transport();
//SYNAPSE_RegisterHTTP_Transport();
end;

View File

@ -7,7 +7,7 @@
<MainUnit Value="0"/>
<IconPath Value="./"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="2"/>
<ActiveEditorIndexAtStart Value="0"/>
</General>
<PublishOptions>
<Version Value="2"/>
@ -26,7 +26,7 @@
<PackageName Value="LCL"/>
</Item1>
</RequiredPackages>
<Units Count="37">
<Units Count="39">
<Unit0>
<Filename Value="test_calc.lpr"/>
<IsPartOfProject Value="True"/>
@ -41,11 +41,9 @@
<IsPartOfProject Value="True"/>
<ResourceFilename Value="main_unit.lrs"/>
<UnitName Value="main_unit"/>
<CursorPos X="10" Y="43"/>
<TopLine Value="28"/>
<EditorIndex Value="0"/>
<CursorPos X="18" Y="131"/>
<TopLine Value="109"/>
<UsageCount Value="80"/>
<Loaded Value="True"/>
</Unit1>
<Unit2>
<Filename Value="..\calculator.pas"/>
@ -53,9 +51,7 @@
<UnitName Value="calculator"/>
<CursorPos X="30" Y="16"/>
<TopLine Value="8"/>
<EditorIndex Value="10"/>
<UsageCount Value="80"/>
<Loaded Value="True"/>
</Unit2>
<Unit3>
<Filename Value="calculator_proxy.pas"/>
@ -63,9 +59,7 @@
<UnitName Value="calculator_proxy"/>
<CursorPos X="28" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="11"/>
<UsageCount Value="80"/>
<Loaded Value="True"/>
</Unit3>
<Unit4>
<Filename Value="..\..\..\..\service_intf.pas"/>
@ -155,27 +149,21 @@
<UnitName Value="base_binary_formatter"/>
<CursorPos X="18" Y="151"/>
<TopLine Value="135"/>
<EditorIndex Value="9"/>
<UsageCount Value="32"/>
<Loaded Value="True"/>
</Unit16>
<Unit17>
<Filename Value="..\..\..\soap_formatter.pas"/>
<UnitName Value="soap_formatter"/>
<CursorPos X="42" Y="171"/>
<TopLine Value="157"/>
<EditorIndex Value="6"/>
<UsageCount Value="32"/>
<Loaded Value="True"/>
</Unit17>
<Unit18>
<Filename Value="..\..\..\service_intf.pas"/>
<UnitName Value="service_intf"/>
<CursorPos X="58" Y="47"/>
<TopLine Value="31"/>
<EditorIndex Value="5"/>
<UsageCount Value="32"/>
<Loaded Value="True"/>
</Unit18>
<Unit19>
<Filename Value="..\..\..\ics_http_protocol.pas"/>
@ -189,18 +177,14 @@
<UnitName Value="base_soap_formatter"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="454"/>
<EditorIndex Value="8"/>
<UsageCount Value="31"/>
<Loaded Value="True"/>
</Unit20>
<Unit21>
<Filename Value="..\..\..\base_service_intf.pas"/>
<UnitName Value="base_service_intf"/>
<CursorPos X="3" Y="235"/>
<TopLine Value="229"/>
<EditorIndex Value="4"/>
<UsageCount Value="31"/>
<Loaded Value="True"/>
</Unit21>
<Unit22>
<Filename Value="D:\lazarusClean\fpcsrc\fcl\xml\dom.pp"/>
@ -226,9 +210,7 @@
<UnitName Value="imp_utils"/>
<CursorPos X="36" Y="104"/>
<TopLine Value="88"/>
<EditorIndex Value="7"/>
<UsageCount Value="15"/>
<Loaded Value="True"/>
</Unit25>
<Unit26>
<Filename Value="D:\lazarusClean\fpcsrc\rtl\win32\classes.pp"/>
@ -289,40 +271,45 @@
<UnitName Value="binary_formatter"/>
<CursorPos X="44" Y="132"/>
<TopLine Value="120"/>
<EditorIndex Value="3"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit34>
<Unit35>
<Filename Value="..\..\..\ics_tcp_protocol.pas"/>
<UnitName Value="ics_tcp_protocol"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="106"/>
<EditorIndex Value="1"/>
<CursorPos X="3" Y="22"/>
<TopLine Value="8"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit35>
<Unit36>
<Filename Value="..\srv\calculator.lrs"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="2"/>
<UsageCount Value="10"/>
</Unit36>
<Unit37>
<Filename Value="..\..\..\library_protocol.pas"/>
<UnitName Value="library_protocol"/>
<CursorPos X="39" Y="213"/>
<TopLine Value="199"/>
<UsageCount Value="10"/>
</Unit37>
<Unit38>
<Filename Value="..\..\metadata_browser\library_protocol.pas"/>
<UnitName Value="library_protocol"/>
<CursorPos X="18" Y="24"/>
<TopLine Value="10"/>
<EditorIndex Value="0"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit36>
</Unit38>
</Units>
<JumpHistory Count="1" HistoryIndex="0">
<Position1>
<Filename Value="main_unit.pas"/>
<Caret Line="43" Column="10" TopLine="28"/>
</Position1>
</JumpHistory>
<JumpHistory Count="0" HistoryIndex="-1"/>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
<PathDelim Value="\"/>
<SearchPaths>
<OtherUnitFiles Value="D:\Lazarus\others_package\ics\latest_distr\Delphi\Vc32\;..\;..\..\..\;D:\Lazarus\others_package\synapse\"/>
<OtherUnitFiles Value="C:\lazarusClean\others_package\ics\latest_distr\Delphi\Vc32\;..\;..\..\..\;C:\lazarusClean\others_package\synapse\"/>
<UnitOutputDirectory Value="obj"/>
<SrcPath Value="$(LazarusDir)\lcl\;$(LazarusDir)\lcl\interfaces\$(LCLWidgetType)\"/>
</SearchPaths>
@ -342,7 +329,8 @@
</Options>
</Linking>
<Other>
<CustomOptions Value="-Xi"/>
<CustomOptions Value="-Xi
"/>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>

View File

@ -12,7 +12,7 @@
<MainUnit Value="0"/>
<IconPath Value="./"/>
<TargetFileExt Value=""/>
<ActiveEditorIndexAtStart Value="1"/>
<ActiveEditorIndexAtStart Value="3"/>
</General>
<PublishOptions>
<Version Value="2"/>
@ -32,15 +32,15 @@
<PackageName Value="indylaz"/>
</Item1>
</RequiredPackages>
<Units Count="41">
<Units Count="44">
<Unit0>
<Filename Value="test_google_api.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="test_google_api"/>
<CursorPos X="22" Y="15"/>
<TopLine Value="1"/>
<EditorIndex Value="1"/>
<UsageCount Value="148"/>
<CursorPos X="19" Y="30"/>
<TopLine Value="21"/>
<EditorIndex Value="0"/>
<UsageCount Value="151"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
@ -49,9 +49,7 @@
<UnitName Value="googlewebapi"/>
<CursorPos X="47" Y="85"/>
<TopLine Value="73"/>
<EditorIndex Value="0"/>
<UsageCount Value="148"/>
<Loaded Value="True"/>
<UsageCount Value="151"/>
</Unit1>
<Unit2>
<Filename Value="googlewebapiimpunit.pas"/>
@ -155,7 +153,7 @@
<UnitName Value="indy_http_protocol"/>
<CursorPos X="45" Y="166"/>
<TopLine Value="156"/>
<UsageCount Value="63"/>
<UsageCount Value="66"/>
</Unit16>
<Unit17>
<Filename Value="..\..\ics_http_protocol.pas"/>
@ -163,9 +161,7 @@
<UnitName Value="ics_http_protocol"/>
<CursorPos X="3" Y="17"/>
<TopLine Value="1"/>
<EditorIndex Value="2"/>
<UsageCount Value="125"/>
<Loaded Value="True"/>
<UsageCount Value="128"/>
</Unit17>
<Unit18>
<Filename Value="D:\Lazarus\others_package\ics\latest_distr\Delphi\Vc32\HttpProt.pas"/>
@ -232,16 +228,20 @@
<Unit27>
<Filename Value="..\..\soap_formatter.pas"/>
<UnitName Value="soap_formatter"/>
<CursorPos X="3" Y="248"/>
<TopLine Value="227"/>
<CursorPos X="36" Y="29"/>
<TopLine Value="12"/>
<EditorIndex Value="1"/>
<UsageCount Value="47"/>
<Loaded Value="True"/>
</Unit27>
<Unit28>
<Filename Value="..\..\base_soap_formatter.pas"/>
<UnitName Value="base_soap_formatter"/>
<CursorPos X="31" Y="1268"/>
<TopLine Value="1253"/>
<CursorPos X="3" Y="694"/>
<TopLine Value="666"/>
<EditorIndex Value="2"/>
<UsageCount Value="47"/>
<Loaded Value="True"/>
</Unit28>
<Unit29>
<Filename Value="..\..\base_service_intf.pas"/>
@ -274,9 +274,11 @@
<Filename Value="googlewebapi_proxy.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="googlewebapi_proxy"/>
<CursorPos X="10" Y="104"/>
<TopLine Value="90"/>
<UsageCount Value="66"/>
<CursorPos X="19" Y="104"/>
<TopLine Value="93"/>
<EditorIndex Value="7"/>
<UsageCount Value="69"/>
<Loaded Value="True"/>
</Unit33>
<Unit34>
<Filename Value="..\..\..\v0.2\base_service_intf.pas"/>
@ -295,9 +297,11 @@
<Unit36>
<Filename Value="..\..\synapse_http_protocol.pas"/>
<UnitName Value="synapse_http_protocol"/>
<CursorPos X="3" Y="154"/>
<TopLine Value="145"/>
<UsageCount Value="11"/>
<CursorPos X="3" Y="178"/>
<TopLine Value="153"/>
<EditorIndex Value="3"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit36>
<Unit37>
<Filename Value="D:\Lazarus\others_package\synapse\httpsend.pas"/>
@ -327,14 +331,48 @@
<TopLine Value="145"/>
<UsageCount Value="10"/>
</Unit40>
<Unit41>
<Filename Value="..\..\imp_utils.pas"/>
<UnitName Value="imp_utils"/>
<CursorPos X="1" Y="86"/>
<TopLine Value="72"/>
<EditorIndex Value="6"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit41>
<Unit42>
<Filename Value="..\..\..\..\..\lazarusClean\lcl\include\lclintf.inc"/>
<CursorPos X="49" Y="342"/>
<TopLine Value="336"/>
<EditorIndex Value="5"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit42>
<Unit43>
<Filename Value="..\..\..\..\..\lazarusClean\others_package\synapse\httpsend.pas"/>
<UnitName Value="httpsend"/>
<CursorPos X="14" Y="143"/>
<TopLine Value="120"/>
<EditorIndex Value="4"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit43>
</Units>
<JumpHistory Count="0" HistoryIndex="-1"/>
<JumpHistory Count="1" HistoryIndex="0">
<Position1>
<Filename Value="test_google_api.pas"/>
<Caret Line="30" Column="19" TopLine="21"/>
</Position1>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="test_google_api.exe"/>
</Target>
<SearchPaths>
<OtherUnitFiles Value="D:\LazarusClean\others_package\ics\latest_distr\Delphi\Vc32\;..\..\;D:\LazarusClean\others_package\synapse\"/>
<OtherUnitFiles Value="C:\LazarusClean\others_package\ics\latest_distr\Delphi\Vc32\;..\..\;C:\LazarusClean\others_package\synapse\"/>
<UnitOutputDirectory Value="obj"/>
<SrcPath Value="..\..\"/>
</SearchPaths>
@ -347,7 +385,8 @@
<Generate Value="Faster"/>
</CodeGeneration>
<Other>
<CustomOptions Value="-Xi"/>
<CustomOptions Value="-Xi
"/>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>

View File

@ -12,7 +12,9 @@ uses
googlewebapi, googlewebapi_proxy;
Const
sADRESS = 'http:Address=http://api.google.com/search/beta2';
//sADRESS = 'http:Address=http://api.google.com/search/beta2;Proxy';
sADDRESS = 'http:Address=http://api.google.com/search/beta2'+
';ProxyServer=10.0.0.5;ProxyPort=8080';
sTARGET = 'urn:GoogleSearch';
sKEY = '0w9pU3tQFHJyjRUP/bKgv2qwCoXf5pop';
sSERVICE_PROTOCOL = 'SOAP';
@ -30,7 +32,7 @@ begin
WriteLn();
WriteLn('Enter phrase to spell :');
ReadLn(strBuffer);
tmpObj := TGoogleSearch_Proxy.Create(sTARGET,sSERVICE_PROTOCOL,sADRESS);
tmpObj := TGoogleSearch_Proxy.Create(sTARGET,sSERVICE_PROTOCOL,sADDRESS);
Try
strBuffer := tmpObj.doSpellingSuggestion(sKEY,strBuffer);
WriteLn('google spell >>> ',strBuffer);

View File

@ -37,7 +37,7 @@
<IsPartOfProject Value="True"/>
<UnitName Value="wst_http_server"/>
<CursorPos X="30" Y="29"/>
<TopLine Value="19"/>
<TopLine Value="12"/>
<EditorIndex Value="4"/>
<UsageCount Value="202"/>
<Loaded Value="True"/>
@ -567,6 +567,9 @@
<CompilerOptions>
<Version Value="5"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="wst_http_server.exe"/>
</Target>
<SearchPaths>
<OtherUnitFiles Value="..\..\;..\calculator\;..\calculator\srv\"/>
<UnitOutputDirectory Value="obj"/>

View File

@ -0,0 +1,279 @@
<?xml version="1.0"?>
<CONFIG>
<ProjectOptions>
<PathDelim Value="\"/>
<Version Value="5"/>
<General>
<MainUnit Value="0"/>
<IconPath Value="./"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="3"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
<Language Value=""/>
<CharSet Value=""/>
</VersionInfo>
<PublishOptions>
<Version Value="2"/>
<IgnoreBinaries Value="False"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
</PublishOptions>
<RunParams>
<local>
<FormatVersion Value="1"/>
<HostApplicationFilename Value="C:\Programmes\lazarus\wst\tests\metadata_browser\metadata_browser.exe"/>
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
<RequiredPackages Count="1">
<Item1>
<PackageName Value="LCL"/>
</Item1>
</RequiredPackages>
<Units Count="17">
<Unit0>
<Filename Value="lib_server.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="lib_server"/>
<CursorPos X="88" Y="6"/>
<TopLine Value="2"/>
<EditorIndex Value="0"/>
<UsageCount Value="30"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="..\tcp_server\server_unit.pas"/>
<UnitName Value="server_unit"/>
<CursorPos X="36" Y="6"/>
<TopLine Value="1"/>
<UsageCount Value="13"/>
<ReadOnly Value="True"/>
</Unit1>
<Unit2>
<Filename Value="library_server_intf.pas"/>
<UnitName Value="library_server_intf"/>
<CursorPos X="45" Y="14"/>
<TopLine Value="1"/>
<UsageCount Value="28"/>
</Unit2>
<Unit3>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\win32\classes.pp"/>
<UnitName Value="Classes"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
</Unit3>
<Unit4>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\classes.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="28"/>
<UsageCount Value="9"/>
</Unit4>
<Unit5>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\classesh.inc"/>
<CursorPos X="10" Y="699"/>
<TopLine Value="672"/>
<UsageCount Value="10"/>
</Unit5>
<Unit6>
<Filename Value="..\..\server_service_intf.pas"/>
<UnitName Value="server_service_intf"/>
<CursorPos X="34" Y="202"/>
<TopLine Value="202"/>
<EditorIndex Value="4"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
<ReadOnly Value="True"/>
</Unit6>
<Unit7>
<Filename Value="..\..\base_service_intf.pas"/>
<UnitName Value="base_service_intf"/>
<CursorPos X="23" Y="13"/>
<TopLine Value="1"/>
<EditorIndex Value="5"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
<ReadOnly Value="True"/>
</Unit7>
<Unit8>
<Filename Value="..\..\synapse_http_protocol.pas"/>
<UnitName Value="synapse_http_protocol"/>
<CursorPos X="45" Y="6"/>
<TopLine Value="1"/>
<UsageCount Value="12"/>
<ReadOnly Value="True"/>
</Unit8>
<Unit9>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\streams.inc"/>
<CursorPos X="3" Y="611"/>
<TopLine Value="606"/>
<UsageCount Value="10"/>
</Unit9>
<Unit10>
<Filename Value="..\..\service_intf.pas"/>
<UnitName Value="service_intf"/>
<CursorPos X="70" Y="140"/>
<TopLine Value="136"/>
<UsageCount Value="12"/>
<ReadOnly Value="True"/>
</Unit10>
<Unit11>
<Filename Value="library_base_intf.pas"/>
<UnitName Value="library_base_intf"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="4"/>
<UsageCount Value="20"/>
</Unit11>
<Unit12>
<Filename Value="..\..\library_base_intf.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="library_base_intf"/>
<CursorPos X="11" Y="56"/>
<TopLine Value="37"/>
<EditorIndex Value="1"/>
<UsageCount Value="27"/>
<Loaded Value="True"/>
</Unit12>
<Unit13>
<Filename Value="..\..\metadata_repository.pas"/>
<UnitName Value="metadata_repository"/>
<CursorPos X="55" Y="102"/>
<TopLine Value="49"/>
<UsageCount Value="10"/>
</Unit13>
<Unit14>
<Filename Value="..\..\binary_streamer.pas"/>
<UnitName Value="binary_streamer"/>
<CursorPos X="24" Y="74"/>
<TopLine Value="67"/>
<EditorIndex Value="2"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit14>
<Unit15>
<Filename Value="..\..\library_server_intf.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="library_server_intf"/>
<CursorPos X="35" Y="103"/>
<TopLine Value="93"/>
<EditorIndex Value="3"/>
<UsageCount Value="21"/>
<Loaded Value="True"/>
</Unit15>
<Unit16>
<Filename Value="..\calculator\srv\calculator_imp.pas"/>
<UnitName Value="calculator_imp"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
</Unit16>
</Units>
<JumpHistory Count="13" HistoryIndex="12">
<Position1>
<Filename Value="..\..\binary_streamer.pas"/>
<Caret Line="89" Column="27" TopLine="67"/>
</Position1>
<Position2>
<Filename Value="..\..\library_server_intf.pas"/>
<Caret Line="107" Column="20" TopLine="67"/>
</Position2>
<Position3>
<Filename Value="..\..\library_server_intf.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position3>
<Position4>
<Filename Value="..\..\library_server_intf.pas"/>
<Caret Line="58" Column="22" TopLine="34"/>
</Position4>
<Position5>
<Filename Value="..\..\library_server_intf.pas"/>
<Caret Line="64" Column="14" TopLine="40"/>
</Position5>
<Position6>
<Filename Value="..\..\library_server_intf.pas"/>
<Caret Line="71" Column="20" TopLine="47"/>
</Position6>
<Position7>
<Filename Value="..\..\library_server_intf.pas"/>
<Caret Line="107" Column="20" TopLine="79"/>
</Position7>
<Position8>
<Filename Value="..\..\library_server_intf.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position8>
<Position9>
<Filename Value="..\..\library_server_intf.pas"/>
<Caret Line="58" Column="13" TopLine="34"/>
</Position9>
<Position10>
<Filename Value="..\..\library_server_intf.pas"/>
<Caret Line="64" Column="1" TopLine="40"/>
</Position10>
<Position11>
<Filename Value="..\..\library_server_intf.pas"/>
<Caret Line="70" Column="1" TopLine="46"/>
</Position11>
<Position12>
<Filename Value="..\..\library_server_intf.pas"/>
<Caret Line="73" Column="13" TopLine="64"/>
</Position12>
<Position13>
<Filename Value="lib_server.lpr"/>
<Caret Line="25" Column="3" TopLine="13"/>
</Position13>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
<PathDelim Value="\"/>
<SearchPaths>
<OtherUnitFiles Value="..\calculator\;..\calculator\srv\;..\..\"/>
<UnitOutputDirectory Value="obj"/>
</SearchPaths>
<CodeGeneration>
<Generate Value="Faster"/>
</CodeGeneration>
<Linking>
<Debugging>
<GenerateDebugInfo Value="True"/>
</Debugging>
<Options>
<ExecutableType Value="Library"/>
</Options>
</Linking>
<Other>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Debugging>
<BreakPoints Count="5">
<Item1>
<Source Value="..\..\home\inoussa\Projets\Laz\tests\soap\test_soap.pas"/>
<Line Value="15"/>
</Item1>
<Item2>
<Source Value="..\..\home\inoussa\Projets\Laz\tests\soap\test_soap.pas"/>
<Line Value="16"/>
</Item2>
<Item3>
<Source Value="..\..\home\inoussa\Projets\Laz\tests\soap\test_soap.pas"/>
<Line Value="18"/>
</Item3>
<Item4>
<Source Value="..\..\home\inoussa\Projets\Laz\tests\soap\googleintfimpunit.pas"/>
<Line Value="63"/>
</Item4>
<Item5>
<Source Value="..\..\basic_binder.pas"/>
<Line Value="62"/>
</Item5>
</BreakPoints>
<Watches Count="1">
<Item1>
<Expression Value="ASource.Memory^"/>
</Item1>
</Watches>
</Debugging>
</CONFIG>

View File

@ -0,0 +1,45 @@
{
This file is part of the Web Service Toolkit
Copyright (c) 2006 by Inoussa OUEDRAOGO
This file is provide under modified LGPL licence
( the files COPYING.modifiedLGPL and COPYING.LGPL).
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
library lib_server;
{$mode objfpc}{$H+}
uses
SysUtils, Classes,
base_service_intf,
server_service_intf,
server_service_soap, server_binary_formatter,
metadata_repository, metadata_wsdl,
metadata_service, metadata_service_binder, metadata_service_imp,
library_base_intf, library_server_intf,
calculator_binder, calculator_imp;
exports
wstHandleRequest name WST_LIB_HANDLER;
begin
RegisterStdTypes();
Server_service_RegisterBinaryFormat();
Server_service_RegisterSoapFormat();
RegisterCalculatorImplementationFactory();
Server_service_RegisterCalculatorService();
Server_service_RegisterWSTMetadataServiceService();
RegisterWSTMetadataServiceImplementationFactory();
end.

View File

@ -7,7 +7,6 @@
<MainUnit Value="0"/>
<IconPath Value="./"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="0"/>
</General>
<PublishOptions>
<Version Value="2"/>
@ -29,14 +28,14 @@
<PackageName Value="indylaz"/>
</Item2>
</RequiredPackages>
<Units Count="16">
<Units Count="27">
<Unit0>
<Filename Value="metadata_browser.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="metadata_browser"/>
<CursorPos X="25" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="68"/>
<UsageCount Value="74"/>
</Unit0>
<Unit1>
<Filename Value="umain.pas"/>
@ -44,74 +43,66 @@
<IsPartOfProject Value="True"/>
<ResourceFilename Value="umain.lrs"/>
<UnitName Value="umain"/>
<CursorPos X="15" Y="49"/>
<TopLine Value="34"/>
<EditorIndex Value="0"/>
<UsageCount Value="68"/>
<Loaded Value="True"/>
<CursorPos X="9" Y="81"/>
<TopLine Value="79"/>
<UsageCount Value="74"/>
</Unit1>
<Unit2>
<Filename Value="..\..\metadata_service_proxy.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="metadata_service_proxy"/>
<CursorPos X="61" Y="35"/>
<TopLine Value="23"/>
<UsageCount Value="68"/>
<CursorPos X="1" Y="43"/>
<TopLine Value="29"/>
<UsageCount Value="74"/>
</Unit2>
<Unit3>
<Filename Value="..\..\base_service_intf.pas"/>
<UnitName Value="base_service_intf"/>
<CursorPos X="1" Y="1196"/>
<TopLine Value="1185"/>
<UsageCount Value="5"/>
<UsageCount Value="4"/>
</Unit3>
<Unit4>
<Filename Value="..\..\indy_http_protocol.pas"/>
<UnitName Value="indy_http_protocol"/>
<CursorPos X="27" Y="155"/>
<TopLine Value="144"/>
<EditorIndex Value="6"/>
<UsageCount Value="18"/>
<Loaded Value="True"/>
<TopLine Value="142"/>
<UsageCount Value="17"/>
</Unit4>
<Unit5>
<Filename Value="..\..\service_intf.pas"/>
<UnitName Value="service_intf"/>
<CursorPos X="34" Y="86"/>
<TopLine Value="117"/>
<UsageCount Value="5"/>
<UsageCount Value="4"/>
</Unit5>
<Unit6>
<Filename Value="..\..\soap_formatter.pas"/>
<UnitName Value="soap_formatter"/>
<CursorPos X="1" Y="216"/>
<TopLine Value="189"/>
<UsageCount Value="5"/>
<UsageCount Value="4"/>
</Unit6>
<Unit7>
<Filename Value="..\..\base_soap_formatter.pas"/>
<UnitName Value="base_soap_formatter"/>
<CursorPos X="30" Y="134"/>
<TopLine Value="134"/>
<UsageCount Value="5"/>
<UsageCount Value="4"/>
</Unit7>
<Unit8>
<Filename Value="..\..\binary_formatter.pas"/>
<UnitName Value="binary_formatter"/>
<CursorPos X="38" Y="35"/>
<TopLine Value="32"/>
<EditorIndex Value="3"/>
<UsageCount Value="17"/>
<Loaded Value="True"/>
<UsageCount Value="16"/>
</Unit8>
<Unit9>
<Filename Value="..\..\ics_http_protocol.pas"/>
<UnitName Value="ics_http_protocol"/>
<CursorPos X="3" Y="24"/>
<TopLine Value="13"/>
<EditorIndex Value="2"/>
<UsageCount Value="13"/>
<Loaded Value="True"/>
<UsageCount Value="12"/>
</Unit9>
<Unit10>
<Filename Value="..\..\metadata_service.pas"/>
@ -119,48 +110,116 @@
<UnitName Value="metadata_service"/>
<CursorPos X="35" Y="106"/>
<TopLine Value="99"/>
<UsageCount Value="63"/>
<UsageCount Value="69"/>
</Unit10>
<Unit11>
<Filename Value="D:\lazarusClean\fpcsrc\rtl\inc\objpash.inc"/>
<CursorPos X="23" Y="118"/>
<TopLine Value="107"/>
<UsageCount Value="5"/>
<UsageCount Value="4"/>
</Unit11>
<Unit12>
<Filename Value="..\..\base_binary_formatter.pas"/>
<UnitName Value="base_binary_formatter"/>
<CursorPos X="49" Y="650"/>
<TopLine Value="639"/>
<EditorIndex Value="4"/>
<UsageCount Value="17"/>
<Loaded Value="True"/>
<UsageCount Value="16"/>
</Unit12>
<Unit13>
<Filename Value="..\..\synapse_http_protocol.pas"/>
<UnitName Value="synapse_http_protocol"/>
<CursorPos X="34" Y="102"/>
<TopLine Value="92"/>
<EditorIndex Value="5"/>
<CursorPos X="5" Y="181"/>
<TopLine Value="153"/>
<UsageCount Value="17"/>
<Loaded Value="True"/>
<ReadOnly Value="True"/>
</Unit13>
<Unit14>
<Filename Value="D:\lazarusClean\others_package\ics\latest_distr\Delphi\Vc32\WSockBuf.pas"/>
<UnitName Value="WSockBuf"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit14>
<Unit15>
<Filename Value="..\..\ics_tcp_protocol.pas"/>
<UnitName Value="ics_tcp_protocol"/>
<CursorPos X="35" Y="83"/>
<TopLine Value="31"/>
<EditorIndex Value="1"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
<CursorPos X="22" Y="69"/>
<TopLine Value="58"/>
<UsageCount Value="13"/>
<ReadOnly Value="True"/>
</Unit15>
<Unit16>
<Filename Value="library_protocol.pas"/>
<UnitName Value="library_protocol"/>
<CursorPos X="1" Y="140"/>
<TopLine Value="180"/>
<UsageCount Value="26"/>
</Unit16>
<Unit17>
<Filename Value="library_imp_utils.pas"/>
<UnitName Value="library_imp_utils"/>
<CursorPos X="1" Y="92"/>
<TopLine Value="78"/>
<UsageCount Value="26"/>
</Unit17>
<Unit18>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\classesh.inc"/>
<CursorPos X="58" Y="1473"/>
<TopLine Value="1445"/>
<UsageCount Value="10"/>
</Unit18>
<Unit19>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\intf.inc"/>
<CursorPos X="9" Y="103"/>
<TopLine Value="99"/>
<UsageCount Value="10"/>
</Unit19>
<Unit20>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\sysstrh.inc"/>
<CursorPos X="10" Y="80"/>
<TopLine Value="66"/>
<UsageCount Value="9"/>
</Unit20>
<Unit21>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\sysstr.inc"/>
<CursorPos X="5" Y="453"/>
<TopLine Value="451"/>
<UsageCount Value="9"/>
</Unit21>
<Unit22>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\inc\dynlibs.pp"/>
<UnitName Value="dynlibs"/>
<CursorPos X="25" Y="64"/>
<TopLine Value="39"/>
<UsageCount Value="10"/>
</Unit22>
<Unit23>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\win32\dynlibs.inc"/>
<CursorPos X="10" Y="43"/>
<TopLine Value="28"/>
<UsageCount Value="10"/>
</Unit23>
<Unit24>
<Filename Value="..\..\library_base_intf.pas"/>
<UnitName Value="library_base_intf"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="12"/>
</Unit24>
<Unit25>
<Filename Value="..\..\metadata_repository.pas"/>
<UnitName Value="metadata_repository"/>
<CursorPos X="1" Y="313"/>
<TopLine Value="299"/>
<UsageCount Value="11"/>
</Unit25>
<Unit26>
<Filename Value="..\..\library_imp_utils.pas"/>
<UnitName Value="library_imp_utils"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
</Unit26>
</Units>
<JumpHistory Count="0" HistoryIndex="-1"/>
</ProjectOptions>
@ -171,7 +230,7 @@
<Filename Value="metadata_browser.exe"/>
</Target>
<SearchPaths>
<OtherUnitFiles Value="..\..\;D:\lazarusClean\others_package\synapse\;D:\lazarusClean\others_package\ics\latest_distr\Delphi\Vc32\"/>
<OtherUnitFiles Value="..\..\;c:\lazarusClean\others_package\synapse\;c:\lazarusClean\others_package\ics\latest_distr\Delphi\Vc32\"/>
<UnitOutputDirectory Value="obj"/>
<SrcPath Value="$(LazarusDir)\lcl\;$(LazarusDir)\lcl\interfaces\$(LCLWidgetType)\"/>
</SearchPaths>
@ -186,7 +245,8 @@
</Options>
</Linking>
<Other>
<CustomOptions Value="-Xi"/>
<CustomOptions Value="-Xi
"/>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>

View File

@ -7,25 +7,29 @@ object fMain: TfMain
VertScrollBar.Page = 310
ActiveControl = edtAddress
Caption = 'WST Metadata Browser'
ClientHeight = 311
ClientWidth = 574
object pnlHead: TPanel
Height = 82
Width = 574
Align = alTop
ClientHeight = 82
ClientWidth = 574
TabOrder = 0
object Label1: TLabel
Left = 14
Height = 14
Height = 18
Top = 12
Width = 20
Width = 26
Caption = 'URL'
Color = clNone
ParentColor = False
end
object Label3: TLabel
Left = 11
Height = 14
Height = 18
Top = 46
Width = 35
Width = 45
Caption = 'Format'
Color = clNone
ParentColor = False
@ -58,7 +62,7 @@ object fMain: TfMain
Left = 88
Height = 37
Top = 35
Width = 238
Width = 280
AutoFill = True
Caption = ' &Format '
ChildSizing.LeftRightSpacing = 6
@ -85,6 +89,8 @@ object fMain: TfMain
Align = alClient
BevelInner = bvRaised
BevelOuter = bvLowered
ClientHeight = 229
ClientWidth = 574
TabOrder = 1
object Label2: TLabel
Left = 14
@ -135,8 +141,8 @@ object fMain: TfMain
end
end
object AL: TActionList
left = 48
top = 384
left = 72
top = 464
object actGetRepositoryList: TAction
Caption = 'Get Rep. List'
OnExecute = actGetRepositoryListExecute

View File

@ -3,49 +3,50 @@
LazarusResources.Add('TfMain','FORMDATA',[
'TPF0'#6'TfMain'#5'fMain'#4'Left'#3#175#0#6'Height'#3'7'#1#3'Top'#3#233#0#5'W'
+'idth'#3'>'#2#18'HorzScrollBar.Page'#3'='#2#18'VertScrollBar.Page'#3'6'#1#13
+'ActiveControl'#7#10'edtAddress'#7'Caption'#6#20'WST Metadata Browser'#0#6'T'
+'Panel'#7'pnlHead'#6'Height'#2'R'#5'Width'#3'>'#2#5'Align'#7#5'alTop'#8'TabO'
+'rder'#2#0#0#6'TLabel'#6'Label1'#4'Left'#2#14#6'Height'#2#14#3'Top'#2#12#5'W'
+'idth'#2#20#7'Caption'#6#3'URL'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6
+'TLabel'#6'Label3'#4'Left'#2#11#6'Height'#2#14#3'Top'#2'.'#5'Width'#2'#'#7'C'
+'aption'#6#6'Format'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#5'TEdit'#10
+'edtAddress'#4'Left'#2'X'#6'Height'#2#23#3'Top'#2#12#5'Width'#3#224#1#7'Anch'
+'ors'#11#5'akTop'#6'akLeft'#7'akRight'#0#12'Font.CharSet'#7#12'ANSI_CHARSET'
+#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#243#9'Font.Name'#6#5'Arial'#10
+'Font.Pitch'#7#10'fpVariable'#8'TabOrder'#2#0#4'Text'#6'6http://127.0.0.1:80'
+'00/wst/services/IWSTMetadataService'#0#0#7'TButton'#13'btnGetRepList'#4'Lef'
+'t'#3#221#1#6'Height'#2#25#3'Top'#2'('#5'Width'#2'['#6'Action'#7#20'actGetRe'
+'positoryList'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBor'
+'der'#2#4#8'TabOrder'#2#2#0#0#11'TRadioGroup'#9'edtFormat'#4'Left'#2'X'#6'He'
+'ight'#2'%'#3'Top'#2'#'#5'Width'#3#238#0#8'AutoFill'#9#7'Caption'#6#9' &Form'
+'at '#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2
+#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'Child'
+'Sizing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.Shrin'
+'kHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsSc'
+'aleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'Ch'
+'ildSizing.ControlsPerLine'#2#2#7'Columns'#2#2#9'ItemIndex'#2#0#13'Items.Str'
+'ings'#1#6#5'&SOAP'#6#7'&binary'#0#8'TabOrder'#2#1#0#0#0#6'TPanel'#9'pnlClie'
+'nt'#6'Height'#3#229#0#3'Top'#2'R'#5'Width'#3'>'#2#5'Align'#7#8'alClient'#10
+'BevelInner'#7#8'bvRaised'#10'BevelOuter'#7#9'bvLowered'#8'TabOrder'#2#1#0#6
+'TLabel'#6'Label2'#4'Left'#2#14#6'Height'#2#14#3'Top'#2#14#5'Width'#2'5'#7'C'
+'aption'#6#10'Repository'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#9'TComb'
+'oBox'#17'edtRepositoryList'#4'Left'#2'p'#6'Height'#2#21#3'Top'#2#7#5'Width'
+#3'X'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#16'AutoCompleteText'#11
+#22'cbactEndOfLineComplete'#20'cbactSearchAscending'#0#9'MaxLength'#2#0#8'Ta'
+'bOrder'#2#0#4'Text'#6#17'edtRepositoryList'#0#0#9'TTreeView'#11'tvwMetadata'
+#4'Left'#2#11#6'Height'#3#176#0#3'Top'#2'&'#5'Width'#3'+'#2#7'Anchors'#11#5
+'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#17'DefaultItemHeight'#2#18#12'Fon'
+'t.CharSet'#7#12'ANSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2
+#243#9'Font.Name'#6#11'Courier New'#10'Font.Pitch'#7#7'fpFixed'#8'ReadOnly'#9
+#8'TabOrder'#2#1#7'Options'#11#17'tvoAutoItemHeight'#16'tvoHideSelection'#21
+'tvoKeepCollapsedNodes'#11'tvoReadOnly'#14'tvoShowButtons'#12'tvoShowLines'
+#11'tvoShowRoot'#17'tvoShowSeparators'#11'tvoToolTips'#0#13'TreeLineColor'#7
+#6'clNavy'#0#0#7'TButton'#7'Button1'#4'Left'#3#221#1#6'Height'#2#25#3'Top'#2
+#6#5'Width'#2'['#6'Action'#7#16'actGetRepository'#7'Anchors'#11#5'akTop'#7'a'
+'kRight'#0#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#2#0#0#0#11'TActio'
+'nList'#2'AL'#4'left'#2'0'#3'top'#3#128#1#0#7'TAction'#20'actGetRepositoryLi'
+'st'#7'Caption'#6#13'Get Rep. List'#9'OnExecute'#7#27'actGetRepositoryListEx'
+'ecute'#0#0#7'TAction'#16'actGetRepository'#7'Caption'#6#14'Get Repository'#9
+'OnExecute'#7#23'actGetRepositoryExecute'#8'OnUpdate'#7#22'actGetRepositoryU'
+'pdate'#0#0#0#0
+'ActiveControl'#7#10'edtAddress'#7'Caption'#6#20'WST Metadata Browser'#12'Cl'
+'ientHeight'#3'7'#1#11'ClientWidth'#3'>'#2#0#6'TPanel'#7'pnlHead'#6'Height'#2
+'R'#5'Width'#3'>'#2#5'Align'#7#5'alTop'#12'ClientHeight'#2'R'#11'ClientWidth'
+#3'>'#2#8'TabOrder'#2#0#0#6'TLabel'#6'Label1'#4'Left'#2#14#6'Height'#2#18#3
+'Top'#2#12#5'Width'#2#26#7'Caption'#6#3'URL'#5'Color'#7#6'clNone'#11'ParentC'
+'olor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#11#6'Height'#2#18#3'Top'#2'.'#5'W'
+'idth'#2'-'#7'Caption'#6#6'Format'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0
+#5'TEdit'#10'edtAddress'#4'Left'#2'X'#6'Height'#2#23#3'Top'#2#12#5'Width'#3
+#224#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#12'Font.CharSet'#7#12'A'
+'NSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#243#9'Font.Name'
+#6#5'Arial'#10'Font.Pitch'#7#10'fpVariable'#8'TabOrder'#2#0#4'Text'#6'6http:'
+'//127.0.0.1:8000/wst/services/IWSTMetadataService'#0#0#7'TButton'#13'btnGet'
+'RepList'#4'Left'#3#221#1#6'Height'#2#25#3'Top'#2'('#5'Width'#2'['#6'Action'
+#7#20'actGetRepositoryList'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpa'
+'cing.InnerBorder'#2#4#8'TabOrder'#2#2#0#0#11'TRadioGroup'#9'edtFormat'#4'Le'
+'ft'#2'X'#6'Height'#2'%'#3'Top'#2'#'#5'Width'#3#24#1#8'AutoFill'#9#7'Caption'
+#6#9' &Format '#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBotto'
+'mSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResi'
+'ze'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'Child'
+'Sizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'
+#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBot'
+'tom'#27'ChildSizing.ControlsPerLine'#2#2#7'Columns'#2#2#9'ItemIndex'#2#0#13
+'Items.Strings'#1#6#5'&SOAP'#6#7'&binary'#0#8'TabOrder'#2#1#0#0#0#6'TPanel'#9
+'pnlClient'#6'Height'#3#229#0#3'Top'#2'R'#5'Width'#3'>'#2#5'Align'#7#8'alCli'
+'ent'#10'BevelInner'#7#8'bvRaised'#10'BevelOuter'#7#9'bvLowered'#12'ClientHe'
+'ight'#3#229#0#11'ClientWidth'#3'>'#2#8'TabOrder'#2#1#0#6'TLabel'#6'Label2'#4
+'Left'#2#14#6'Height'#2#14#3'Top'#2#14#5'Width'#2'5'#7'Caption'#6#10'Reposit'
+'ory'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#9'TComboBox'#17'edtReposito'
+'ryList'#4'Left'#2'p'#6'Height'#2#21#3'Top'#2#7#5'Width'#3'X'#1#7'Anchors'#11
+#5'akTop'#6'akLeft'#7'akRight'#0#16'AutoCompleteText'#11#22'cbactEndOfLineCo'
+'mplete'#20'cbactSearchAscending'#0#9'MaxLength'#2#0#8'TabOrder'#2#0#4'Text'
+#6#17'edtRepositoryList'#0#0#9'TTreeView'#11'tvwMetadata'#4'Left'#2#11#6'Hei'
+'ght'#3#176#0#3'Top'#2'&'#5'Width'#3'+'#2#7'Anchors'#11#5'akTop'#6'akLeft'#7
+'akRight'#8'akBottom'#0#17'DefaultItemHeight'#2#18#12'Font.CharSet'#7#12'ANS'
+'I_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#243#9'Font.Name'#6
+#11'Courier New'#10'Font.Pitch'#7#7'fpFixed'#8'ReadOnly'#9#8'TabOrder'#2#1#7
+'Options'#11#17'tvoAutoItemHeight'#16'tvoHideSelection'#21'tvoKeepCollapsedN'
+'odes'#11'tvoReadOnly'#14'tvoShowButtons'#12'tvoShowLines'#11'tvoShowRoot'#17
+'tvoShowSeparators'#11'tvoToolTips'#0#13'TreeLineColor'#7#6'clNavy'#0#0#7'TB'
+'utton'#7'Button1'#4'Left'#3#221#1#6'Height'#2#25#3'Top'#2#6#5'Width'#2'['#6
+'Action'#7#16'actGetRepository'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'Borde'
+'rSpacing.InnerBorder'#2#4#8'TabOrder'#2#2#0#0#0#11'TActionList'#2'AL'#4'lef'
+'t'#2'H'#3'top'#3#208#1#0#7'TAction'#20'actGetRepositoryList'#7'Caption'#6#13
+'Get Rep. List'#9'OnExecute'#7#27'actGetRepositoryListExecute'#0#0#7'TAction'
+#16'actGetRepository'#7'Caption'#6#14'Get Repository'#9'OnExecute'#7#23'actG'
+'etRepositoryExecute'#8'OnUpdate'#7#22'actGetRepositoryUpdate'#0#0#0#0
]);

View File

@ -45,6 +45,7 @@ uses base_service_intf, service_intf,
soap_formatter, binary_formatter,
synapse_http_protocol, //indy_http_protocol, ics_http_protocol,
//ics_tcp_protocol,
library_protocol,
metadata_service_proxy;
{ TfMain }
@ -93,8 +94,11 @@ begin
Result := TWSTMetadataService_Proxy.Create(
'WSTMetadataService',
s,
Format('http:Address=%s',[edtAddress.Text])// 'http:Address=http://127.0.0.1:8000/services/IWSTMetadataService'
) as IWSTMetadataService;//'TCP:Address=127.0.0.1;Port=1234;target=Calculator'
Format('http:Address=%s',[edtAddress.Text])
) as IWSTMetadataService;
//lib:FileName=C:\Programmes\lazarus\wst\tests\library\obj\lib_server.dll;target=IWSTMetadataService
//'http:Address=http://127.0.0.1:8000/services/IWSTMetadataService'
//'TCP:Address=127.0.0.1;Port=1234;target=Calculator'
end;
procedure TfMain.LoadRepository(ARep: TWSTMtdRepository);
@ -158,6 +162,7 @@ initialization
RegisterStdTypes();
SYNAPSE_RegisterHTTP_Transport();
LIB_Register_Transport();
//ICS_RegisterHTTP_Transport();
//INDY_RegisterHTTP_Transport();
end.

View File

@ -257,15 +257,27 @@
<CompilerOptions>
<Version Value="5"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="ws_helper.exe"/>
</Target>
<SearchPaths>
<OtherUnitFiles Value="..\"/>
<UnitOutputDirectory Value="obj"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>
<IncludeAssertionCode Value="True"/>
</SyntaxOptions>
</Parsing>
<CodeGeneration>
<Generate Value="Faster"/>
<Optimizations>
<OptimizationLevel Value="2"/>
</Optimizations>
</CodeGeneration>
<Other>
<CustomOptions Value="-Xi"/>
<CustomOptions Value="-Xi
"/>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>