- Type Library Editor : array support

- better Delphi support
- server listeners refactored to ease service creation

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@214 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
inoussa
2007-07-14 23:17:03 +00:00
parent 5ce9841611
commit 7032cef6b7
39 changed files with 1136 additions and 615 deletions

View File

@ -24,6 +24,7 @@ uses
const
sROOT = 'ROOT';
sSCOPE_INNER_NAME = 'INNER_VAL';
sFORMAT = 'format';
{$IFDEF wst_binary_header}
sHEADER = 'HEADER';
{$ENDIF}

View File

@ -37,6 +37,7 @@ const
sARRAY_TYPE = 'arrayType';
sCONTENT_TYPE = 'contenttype';
sFORMAT = 'format';
sSOAP_CONTENT_TYPE = 'text/xml';
sHEADER = 'Header';

View File

@ -28,6 +28,7 @@ const
sCONTENT_TYPE = 'contenttype';
sFORMAT = 'format';
sXMLRPC_CONTENT_TYPE = 'text/xml';
sDATA = 'data';

View File

@ -167,13 +167,19 @@ procedure TBinaryCallMaker.MakeCall(
);
Var
rqt, rsps : TMemoryStream;
propMngr : IPropertyManager;
begin
Assert(Assigned(ASerializer));
Assert(Assigned(ATransport));
ATransport.GetPropertyManager().SetProperty(
propMngr := ATransport.GetPropertyManager();
propMngr.SetProperty(
sCONTENT_TYPE,
sBINARY_CONTENT
);
propMngr.SetProperty(
sFORMAT,
sPROTOCOL_NAME
);
rsps := Nil;
rqt := TMemoryStream.Create();
Try

View File

@ -13,7 +13,7 @@
{$INCLUDE wst_global.inc}
unit ics_http_protocol;
{$DEFINE WST_DBG}
//{$DEFINE WST_DBG}
interface
@ -50,6 +50,7 @@ Type
procedure SetProxyServer(const AValue: string);
procedure SetProxyUsername(const AValue: string);
private
FFormat : string;
procedure HttpBeforeHeaderSendHandler(
Sender : TObject;
const Method : String;
@ -68,6 +69,7 @@ Type
property ProxyUsername : string read GetProxyUsername write SetProxyUsername;
property ProxyPassword : string read GetProxyPassword write SetProxyPassword;
property SoapAction : string read FSoapAction write FSoapAction;
property Format : string read FFormat write FFormat;
End;
{$M+}

View File

@ -48,6 +48,7 @@ Type
FDataBuffer : string;
FAllDataRead : Boolean;
FBeginRead : Boolean;
FFormat : string;
FHasException : Boolean;
FExceptionMessage : string;
procedure DataAvailable(Sender: TObject; Error: Word);
@ -62,6 +63,7 @@ Type
property ContentType : string Read FContentType Write FContentType;
property Address : string Read GetAddress Write SetAddress;
property Port : string Read GetPort Write SetPort;
property Format : string read FFormat write FFormat;
End;
{$M+}
@ -173,6 +175,7 @@ begin
wrtr.WriteInt32S(0);
wrtr.WriteStr(Target);
wrtr.WriteStr(ContentType);
wrtr.WriteStr(Self.Format);
SetLength(strBuff,ARequest.Size);
ARequest.Position := 0;
ARequest.Read(strBuff[1],Length(strBuff));

View File

@ -7,7 +7,7 @@
<MainUnit Value="0"/>
<IconPath Value="./"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="3"/>
<ActiveEditorIndexAtStart Value="2"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
@ -29,7 +29,7 @@
<PackageName Value="LCL"/>
</Item1>
</RequiredPackages>
<Units Count="39">
<Units Count="40">
<Unit0>
<Filename Value="test_import.lpr"/>
<IsPartOfProject Value="True"/>
@ -44,8 +44,8 @@
<IsPartOfProject Value="True"/>
<ResourceFilename Value="..\wstimportdlg.lrs"/>
<UnitName Value="wstimportdlg"/>
<CursorPos X="22" Y="256"/>
<TopLine Value="233"/>
<CursorPos X="1" Y="5"/>
<TopLine Value="1"/>
<EditorIndex Value="0"/>
<UsageCount Value="73"/>
<Loaded Value="True"/>
@ -76,7 +76,7 @@
<UnitName Value="pascal_parser_intf"/>
<CursorPos X="1" Y="390"/>
<TopLine Value="375"/>
<EditorIndex Value="7"/>
<EditorIndex Value="8"/>
<UsageCount Value="35"/>
<Loaded Value="True"/>
</Unit5>
@ -92,7 +92,7 @@
<UnitName Value="wsdl2pas_imp"/>
<CursorPos X="18" Y="747"/>
<TopLine Value="736"/>
<EditorIndex Value="6"/>
<EditorIndex Value="7"/>
<UsageCount Value="36"/>
<Loaded Value="True"/>
</Unit7>
@ -108,7 +108,7 @@
<UnitName Value="source_utils"/>
<CursorPos X="14" Y="311"/>
<TopLine Value="291"/>
<EditorIndex Value="8"/>
<EditorIndex Value="9"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit9>
@ -117,7 +117,7 @@
<UnitName Value="generator"/>
<CursorPos X="31" Y="1645"/>
<TopLine Value="1633"/>
<EditorIndex Value="5"/>
<EditorIndex Value="6"/>
<UsageCount Value="36"/>
<Loaded Value="True"/>
</Unit10>
@ -126,7 +126,7 @@
<UnitName Value="metadata_generator"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="4"/>
<EditorIndex Value="5"/>
<UsageCount Value="36"/>
<Loaded Value="True"/>
</Unit11>
@ -149,9 +149,11 @@
<Unit14>
<Filename Value="..\..\..\wst_rtti_filter\cursor_intf.pas"/>
<UnitName Value="cursor_intf"/>
<CursorPos X="1" Y="99"/>
<TopLine Value="77"/>
<CursorPos X="2" Y="13"/>
<TopLine Value="1"/>
<EditorIndex Value="4"/>
<UsageCount Value="16"/>
<Loaded Value="True"/>
</Unit14>
<Unit15>
<Filename Value="..\..\..\wst_rtti_filter\dom_cursors.pas"/>
@ -199,7 +201,7 @@
<IsPartOfProject Value="True"/>
<ResourceFilename Value="uform2.lrs"/>
<UnitName Value="uform2"/>
<CursorPos X="5" Y="44"/>
<CursorPos X="45" Y="28"/>
<TopLine Value="19"/>
<EditorIndex Value="3"/>
<UsageCount Value="73"/>
@ -271,7 +273,7 @@
<Unit32>
<Filename Value="..\wst_register.pas"/>
<UnitName Value="wst_register"/>
<CursorPos X="12" Y="8"/>
<CursorPos X="14" Y="6"/>
<TopLine Value="1"/>
<EditorIndex Value="1"/>
<UsageCount Value="30"/>
@ -315,13 +317,42 @@
<TopLine Value="465"/>
<UsageCount Value="10"/>
</Unit38>
<Unit39>
<Filename Value="..\..\..\service_intf.pas"/>
<UnitName Value="service_intf"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
</Unit39>
</Units>
<JumpHistory Count="0" HistoryIndex="-1"/>
<JumpHistory Count="5" HistoryIndex="4">
<Position1>
<Filename Value="..\..\..\wst_rtti_filter\cursor_intf.pas"/>
<Caret Line="99" Column="1" TopLine="77"/>
</Position1>
<Position2>
<Filename Value="..\..\..\ws_helper\wst_resources_utils.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position2>
<Position3>
<Filename Value="..\wstimportdlg.pas"/>
<Caret Line="256" Column="22" TopLine="233"/>
</Position3>
<Position4>
<Filename Value="..\wstimportdlg.pas"/>
<Caret Line="12" Column="31" TopLine="54"/>
</Position4>
<Position5>
<Filename Value="..\..\..\ws_helper\wst_resources_utils.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position5>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
<PathDelim Value="\"/>
<SearchPaths>
<IncludeFiles Value="..\..\..\"/>
<OtherUnitFiles Value="..\;..\..\..\;..\..\..\ws_helper\;..\..\..\wst_rtti_filter\"/>
<UnitOutputDirectory Value="obj"/>
</SearchPaths>

View File

@ -46,12 +46,12 @@ object formImport: TformImport
Left = 9
Height = 23
Top = 31
Width = 408
Width = 404
Anchors = [akTop, akLeft, akRight]
TabOrder = 0
end
object Button2: TButton
Left = 435
Left = 431
Height = 25
Top = 31
Width = 40
@ -64,12 +64,12 @@ object formImport: TformImport
Left = 9
Height = 23
Top = 88
Width = 408
Width = 404
Anchors = [akTop, akLeft, akRight]
TabOrder = 2
end
object Button3: TButton
Left = 435
Left = 431
Height = 25
Top = 88
Width = 40

View File

@ -14,13 +14,13 @@ LazarusResources.Add('TformImport','FORMDATA',[
+'on File ( WSDL )'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#9#6'H'
+'eight'#2#14#3'Top'#2'E'#5'Width'#2'Q'#7'Caption'#6#16'Output directory'#11
+'ParentColor'#8#0#0#5'TEdit'#12'edtInputFile'#4'Left'#2#9#6'Height'#2#23#3'T'
+'op'#2#31#5'Width'#3#152#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'T'
+'abOrder'#2#0#0#0#7'TButton'#7'Button2'#4'Left'#3#179#1#6'Height'#2#25#3'Top'
+'op'#2#31#5'Width'#3#148#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'T'
+'abOrder'#2#0#0#0#7'TButton'#7'Button2'#4'Left'#3#175#1#6'Height'#2#25#3'Top'
+#2#31#5'Width'#2'('#6'Action'#7#11'actOpenFile'#7'Anchors'#11#5'akTop'#7'akR'
+'ight'#0#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#1#0#0#5'TEdit'#12'e'
+'dtOutputDir'#4'Left'#2#9#6'Height'#2#23#3'Top'#2'X'#5'Width'#3#152#1#7'Anch'
+'dtOutputDir'#4'Left'#2#9#6'Height'#2#23#3'Top'#2'X'#5'Width'#3#148#1#7'Anch'
+'ors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabOrder'#2#2#0#0#7'TButton'#7'Bu'
+'tton3'#4'Left'#3#179#1#6'Height'#2#25#3'Top'#2'X'#5'Width'#2'('#6'Action'#7
+'tton3'#4'Left'#3#175#1#6'Height'#2#25#3'Top'#2'X'#5'Width'#2'('#6'Action'#7
+#10'actOpenDir'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBo'
+'rder'#2#4#8'TabOrder'#2#3#0#0#9'TCheckBox'#15'edtAddToProject'#4'Left'#2#9#6
+'Height'#2#13#3'Top'#3#128#0#5'Width'#3#176#0#7'Caption'#6'"Add the generate'

View File

@ -13,8 +13,6 @@
{$INCLUDE wst_global.inc}
unit indy_http_protocol;
{$mode objfpc}{$H+}
//{$DEFINE WST_DBG}
interface
@ -36,6 +34,7 @@ Type
{ THTTPTransport }
THTTPTransport = class(TSimpleFactoryItem,ITransport)
Private
FFormat : string;
FPropMngr : IPropertyManager;
FConnection : TidHttp;
FSoapAction: string;
@ -63,6 +62,7 @@ Type
property ProxyUsername : string read GetProxyUsername write SetProxyUsername;
property ProxyPassword : string read GetProxyPassword write SetProxyPassword;
property SoapAction : string read FSoapAction write FSoapAction;
property Format : string read FFormat write FFormat;
End;
{$M+}

View File

@ -34,16 +34,17 @@ uses
{$IFDEF INDY_9}
IdTCPServer,
{$ENDIF}
IdSocketHandle;
IdSocketHandle,
server_listener;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
type
{ TwstWebApplication }
{ TwstIndyHttpListener }
TwstWebApplication = class(TObject)
TwstIndyHttpListener = class(TwstListener)
private
FHTTPServerObject: TIdHTTPServer;
FRootAddress : string;
@ -85,9 +86,9 @@ type
const AServerSoftware : string = 'Web Service Toolkit Application'
);
destructor Destroy(); override;
procedure Display(const AMsg : string);
procedure Start();
procedure Stop();
class function GetDescription() : string;override;
procedure Start();override;
procedure Stop();override;
end;
@ -190,9 +191,9 @@ begin
end;
{ TwstWebApplication }
{ TwstIndyHttpListener }
function TwstWebApplication.GenerateWSDLTable(): string;
function TwstIndyHttpListener.GenerateWSDLTable(): string;
var
r : IModuleMetadataMngr;
i : Integer;
@ -201,29 +202,31 @@ begin
Result := '<html>' +
'<head>'+
'<title>'+
'The Web Service Toolkit generated Metadata table'+
'The Web Services Toolkit generated Metadata table'+
'</title>'+
'<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>'+
'<table width="100%">' +
'<tr>';
'<table width="100%">';
for i := 0 to Pred(r.GetCount()) do
Result := Result + '<td align="center">' +
for i := 0 to Pred(r.GetCount()) do begin
Result := Result +
'<tr>' +
'<td align="left">' +
Format('<a href="%s">',[sSEPARATOR+sSERVICES_PREFIXE+sSEPARATOR+sWSDL+sSEPARATOR+r.GetRepositoryName(i)])+
r.GetRepositoryName(i) +
'</a>'+
'</td>';
'</td>' +
'</tr>';
end;
Result := Result +
'</tr>'+
'</table>'+
'</body>'+
'</head>'+
'</html>';
end;
procedure TwstWebApplication.ProcessWSDLRequest(
procedure TwstIndyHttpListener.ProcessWSDLRequest(
{$IFDEF INDY_10}
AContext : TIdContext;
{$ENDIF}
@ -251,7 +254,7 @@ begin
AResponseInfo.ContentType := 'text/html';
end;
procedure TwstWebApplication.ProcessServiceRequest(
procedure TwstIndyHttpListener.ProcessServiceRequest(
{$IFDEF INDY_10}
AContext : TIdContext;
{$ENDIF}
@ -289,13 +292,13 @@ begin
end;
except
on e : Exception do begin
Display('ProcessData()>> Exception = '+e.Message);
NotifyMessage('ProcessData()>> Exception = '+e.Message);
raise;
end;
end;
end;
procedure TwstWebApplication.Handler_CommandGet(
procedure TwstIndyHttpListener.Handler_CommandGet(
{$IFDEF INDY_10}
AContext : TIdContext;
{$ENDIF}
@ -306,20 +309,26 @@ procedure TwstWebApplication.Handler_CommandGet(
AResponseInfo : TIdHTTPResponseInfo
);
var
locPath, locPathPart, s : string;
{$IFDEF WST_DBG}
s : string;
{$ENDIF}
locPath, locPathPart : string;
j : SizeInt;
begin
{$IFDEF WST_DBG}
if Assigned(ARequestInfo.PostStream) and ( ARequestInfo.PostStream.Size > 0 ) then begin
j := ARequestInfo.PostStream.Size;
SetLength(s,j);
ARequestInfo.PostStream.Read(s[1],j);
Display('----------- QUERY ----------------------');
NotifyMessage('----------- QUERY ----------------------');
Display(s);
end;
{$ENDIF}
locPath := ARequestInfo.Document;
locPathPart := ExtractNextPathElement(locPath);
if AnsiSameText(sSERVICES_PREFIXE,locPathPart) then begin
ProcessServiceRequest({$IFDEF INDY_10}AContext,{$ENDIF}ARequestInfo,AResponseInfo,locPath);
{$IFDEF WST_DBG}
if Assigned(AResponseInfo.ContentStream) and ( AResponseInfo.ContentStream.Size > 0 ) then begin
j := AResponseInfo.ContentStream.Size;
SetLength(s,j);
@ -328,13 +337,14 @@ begin
Display('--------- RESPONSE ------------------------');
Display(s);
end;
{$ENDIF}
Exit;
end;
ProcessWSDLRequest({$IFDEF INDY_10}AContext,{$ENDIF}ARequestInfo,AResponseInfo,locPath);
end;
constructor TwstWebApplication.Create(
constructor TwstIndyHttpListener.Create(
const AServerIpAddress : string;
const AListningPort : Integer;
const ADefaultClientPort : Integer;
@ -355,34 +365,35 @@ begin
FHTTPServerObject.DefaultPort := ADefaultClientPort;
FHTTPServerObject.ServerSoftware := AServerSoftware;
FHTTPServerObject.Active := True;
//FHTTPServerObject.Active := True;
FHTTPServerObject.OnCommandGet := {$IFDEF FPC}@{$ENDIF}Handler_CommandGet;
end;
destructor TwstWebApplication.Destroy();
destructor TwstIndyHttpListener.Destroy();
begin
if ( FHTTPServerObject <> nil ) then
Stop();
FreeAndNil(FHTTPServerObject);
inherited Destroy();
end;
procedure TwstWebApplication.Display(const AMsg: string);
begin
//WriteLn(AMsg);
end;
procedure TwstWebApplication.Start();
procedure TwstIndyHttpListener.Start();
begin
if not FHTTPServerObject.Active then
FHTTPServerObject.Active := True;
end;
procedure TwstWebApplication.Stop();
procedure TwstIndyHttpListener.Stop();
begin
if FHTTPServerObject.Active then
FHTTPServerObject.Active := False;
end;
class function TwstIndyHttpListener.GetDescription: string;
begin
Result := 'Indy HTTP Listener';
end;
initialization
RegisterStdTypes();
Server_service_RegisterBinaryFormat();

View File

@ -42,6 +42,7 @@ Type
FFileName: string;
FTarget: string;
private
FFormat : string;
procedure SetFileName(const AValue: string);
procedure LoadModule();
public
@ -53,6 +54,7 @@ Type
property ContentType : string read FContentType write FContentType;
property Target : string read FTarget write FTarget;
property FileName : string read FFileName write SetFileName;
property Format : string read FFormat write FFormat;
end;
{$M+}
@ -207,6 +209,7 @@ begin
wrtr.WriteInt32S(0);
wrtr.WriteStr(Target);
wrtr.WriteStr(ContentType);
wrtr.WriteStr(Self.Format);
SetLength(strBuff,ARequest.Size);
ARequest.Position := 0;
ARequest.Read(strBuff[1],Length(strBuff));

View File

@ -54,7 +54,7 @@ function wstHandleRequest(
end;
Var
buff, trgt,ctntyp : string;
buff, trgt,ctntyp, frmt : string;
rqst : IRequestBuffer;
rdr : IDataStoreReader;
inStream, bufStream : TMemoryStream;
@ -84,6 +84,7 @@ begin
wstCheck(RET_FALSE,'Invalid buffer.');
trgt := rdr.ReadStr();
ctntyp := rdr.ReadStr();
frmt := rdr.ReadStr();
buff := rdr.ReadStr();
rdr := nil;
bufStream.Size := 0;
@ -91,7 +92,7 @@ begin
inStream.Write(buff[1],Length(buff));
SetLength(buff,0);
inStream.Position := 0;
rqst := TRequestBuffer.Create(trgt,ctntyp,inStream,bufStream,'');
rqst := TRequestBuffer.Create(trgt,ctntyp,inStream,bufStream,frmt);
HandleServiceRequest(rqst);
bs := bufStream.Size;
wstCheck(ARequestBuffer.SetSize(bs));

View File

@ -36,6 +36,7 @@ Type
Private
FAdress: string;
FContentType: string;
FFormat : string;
FPropMngr : IPropertyManager;
Public
constructor Create();override;
@ -45,6 +46,7 @@ Type
Published
property ContentType : string Read FContentType Write FContentType;
property Adress : string Read FAdress Write FAdress;
property Format : string read FFormat write FFormat;
End;
{$M+}
@ -78,7 +80,7 @@ Var
i : Int64;
{$ENDIF WST_DBG}
begin
bffr := TRequestBuffer.Create(Adress,ContentType,ARequest,AResponse);
bffr := TRequestBuffer.Create(Adress,ContentType,ARequest,AResponse,Format);
HandleServiceRequest(bffr);
{$IFDEF WST_DBG}
i := AResponse.Position;

View File

@ -5,28 +5,28 @@ program http_server;
uses
SysUtils,
Classes,
{$IFNDEF FPC}
ActiveX,
{$ENDIF}
indy_http_server,
metadata_service,
logger_extension,
wst_delphi_rtti_utils in '..\..\..\wst_delphi_rtti_utils.pas';
wst_delphi_rtti_utils in '..\..\..\wst_delphi_rtti_utils.pas',
server_listener in '..\..\..\server_listener.pas';
var
AppObject : TwstWebApplication;
AppObject : TwstIndyHttpListener;
begin
{$IFNDEF FPC}
CoInitialize(nil);
try
{$ENDIF}
AppObject := TwstWebApplication.Create();
AppObject := TwstIndyHttpListener.Create();
try
WriteLn('"Web Service Toolkit" HTTP Server sample listening at:');
WriteLn('');
WriteLn('http://127.0.0.1:8000/');
WriteLn('');
WriteLn('Press enter to quit.');
AppObject.Start();
ReadLn;
finally
FreeAndNil(AppObject);

View File

@ -34,15 +34,15 @@
<PackageName Value="indylaz"/>
</Item1>
</RequiredPackages>
<Units Count="48">
<Units Count="49">
<Unit0>
<Filename Value="http_server.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="http_server"/>
<CursorPos X="19" Y="10"/>
<CursorPos X="33" Y="16"/>
<TopLine Value="1"/>
<EditorIndex Value="0"/>
<UsageCount Value="73"/>
<UsageCount Value="81"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
@ -50,15 +50,15 @@
<UnitName Value="app_object"/>
<CursorPos X="42" Y="214"/>
<TopLine Value="200"/>
<UsageCount Value="36"/>
<UsageCount Value="35"/>
</Unit1>
<Unit2>
<Filename Value="..\..\base_service_intf.pas"/>
<UnitName Value="base_service_intf"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="20"/>
<UsageCount Value="35"/>
<EditorIndex Value="21"/>
<UsageCount Value="39"/>
<Loaded Value="True"/>
</Unit2>
<Unit3>
@ -66,8 +66,8 @@
<UnitName Value="metadata_wsdl"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="22"/>
<UsageCount Value="36"/>
<EditorIndex Value="23"/>
<UsageCount Value="40"/>
<Loaded Value="True"/>
</Unit3>
<Unit4>
@ -75,8 +75,8 @@
<UnitName Value="metadata_service_imp"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="8"/>
<UsageCount Value="20"/>
<EditorIndex Value="9"/>
<UsageCount Value="24"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
@ -84,8 +84,8 @@
<UnitName Value="user_service_intf_imp"/>
<CursorPos X="22" Y="161"/>
<TopLine Value="160"/>
<EditorIndex Value="16"/>
<UsageCount Value="33"/>
<EditorIndex Value="17"/>
<UsageCount Value="37"/>
<Loaded Value="True"/>
</Unit5>
<Unit6>
@ -93,8 +93,8 @@
<UnitName Value="user_service_intf_binder"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="4"/>
<UsageCount Value="19"/>
<EditorIndex Value="5"/>
<UsageCount Value="23"/>
<Loaded Value="True"/>
</Unit6>
<Unit7>
@ -102,8 +102,8 @@
<UnitName Value="user_service_intf"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="17"/>
<UsageCount Value="33"/>
<EditorIndex Value="18"/>
<UsageCount Value="37"/>
<Loaded Value="True"/>
</Unit7>
<Unit8>
@ -111,8 +111,8 @@
<UnitName Value="metadata_repository"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="25"/>
<UsageCount Value="36"/>
<EditorIndex Value="26"/>
<UsageCount Value="40"/>
<Loaded Value="True"/>
</Unit8>
<Unit9>
@ -120,8 +120,8 @@
<UnitName Value="semaphore"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<EditorIndex Value="21"/>
<UsageCount Value="20"/>
<EditorIndex Value="22"/>
<UsageCount Value="24"/>
<Loaded Value="True"/>
</Unit9>
<Unit10>
@ -129,8 +129,8 @@
<UnitName Value="server_service_intf"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="15"/>
<UsageCount Value="35"/>
<EditorIndex Value="16"/>
<UsageCount Value="39"/>
<Loaded Value="True"/>
</Unit10>
<Unit11>
@ -138,8 +138,8 @@
<UnitName Value="server_service_soap"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="12"/>
<UsageCount Value="35"/>
<EditorIndex Value="13"/>
<UsageCount Value="39"/>
<Loaded Value="True"/>
</Unit11>
<Unit12>
@ -147,8 +147,8 @@
<UnitName Value="base_soap_formatter"/>
<CursorPos X="17" Y="28"/>
<TopLine Value="13"/>
<EditorIndex Value="14"/>
<UsageCount Value="35"/>
<EditorIndex Value="15"/>
<UsageCount Value="39"/>
<Loaded Value="True"/>
</Unit12>
<Unit13>
@ -156,8 +156,8 @@
<UnitName Value="server_service_imputils"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="19"/>
<UsageCount Value="34"/>
<EditorIndex Value="20"/>
<UsageCount Value="38"/>
<Loaded Value="True"/>
</Unit13>
<Unit14>
@ -165,34 +165,34 @@
<UnitName Value="IdCustomHTTPServer"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit14>
<Unit15>
<Filename Value="..\..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\i386\i386.inc"/>
<CursorPos X="49" Y="1252"/>
<TopLine Value="1231"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit15>
<Unit16>
<Filename Value="..\..\wst.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit16>
<Unit17>
<Filename Value="..\..\xmlrpc_formatter.pas"/>
<UnitName Value="xmlrpc_formatter"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="28"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit17>
<Unit18>
<Filename Value="..\..\server_service_xmlrpc.pas"/>
<UnitName Value="server_service_xmlrpc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="7"/>
<UsageCount Value="33"/>
<EditorIndex Value="8"/>
<UsageCount Value="37"/>
<Loaded Value="True"/>
</Unit18>
<Unit19>
@ -200,8 +200,8 @@
<UnitName Value="server_binary_formatter"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="13"/>
<UsageCount Value="31"/>
<EditorIndex Value="14"/>
<UsageCount Value="35"/>
<Loaded Value="True"/>
</Unit19>
<Unit20>
@ -209,8 +209,8 @@
<UnitName Value="base_xmlrpc_formatter"/>
<CursorPos X="18" Y="21"/>
<TopLine Value="1"/>
<EditorIndex Value="11"/>
<UsageCount Value="31"/>
<EditorIndex Value="12"/>
<UsageCount Value="35"/>
<Loaded Value="True"/>
</Unit20>
<Unit21>
@ -218,109 +218,109 @@
<UnitName Value="IdSocketHandle"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit21>
<Unit22>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\others_package\indy\indy-10.2.0.1\lazarus\IdAboutVCL.pas"/>
<UnitName Value="IdAboutVCL"/>
<CursorPos X="19" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit22>
<Unit23>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\others_package\indy\indy-10.2.0.1\fpc\System\IdGlobal.pas"/>
<UnitName Value="IdGlobal"/>
<CursorPos X="59" Y="982"/>
<TopLine Value="981"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit23>
<Unit24>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\systemh.inc"/>
<CursorPos X="21" Y="208"/>
<TopLine Value="193"/>
<EditorIndex Value="24"/>
<UsageCount Value="17"/>
<EditorIndex Value="25"/>
<UsageCount Value="21"/>
<Loaded Value="True"/>
</Unit24>
<Unit25>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\innr.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="42"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit25>
<Unit26>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\i386\fastmove.inc"/>
<CursorPos X="11" Y="835"/>
<TopLine Value="821"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit26>
<Unit27>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\system.inc"/>
<CursorPos X="11" Y="306"/>
<TopLine Value="285"/>
<EditorIndex Value="5"/>
<UsageCount Value="25"/>
<EditorIndex Value="6"/>
<UsageCount Value="29"/>
<Loaded Value="True"/>
</Unit27>
<Unit28>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\generic.inc"/>
<CursorPos X="5" Y="1289"/>
<TopLine Value="1"/>
<UsageCount Value="15"/>
<UsageCount Value="14"/>
</Unit28>
<Unit29>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\system.fpd"/>
<CursorPos X="22" Y="17"/>
<TopLine Value="1"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit29>
<Unit30>
<Filename Value="..\..\wst_fpc_xml.pas"/>
<UnitName Value="wst_fpc_xml"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="3"/>
<UsageCount Value="24"/>
<EditorIndex Value="4"/>
<UsageCount Value="28"/>
<Loaded Value="True"/>
</Unit30>
<Unit31>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\sysutils\sysstrh.inc"/>
<CursorPos X="11" Y="66"/>
<TopLine Value="52"/>
<EditorIndex Value="2"/>
<UsageCount Value="24"/>
<EditorIndex Value="3"/>
<UsageCount Value="28"/>
<Loaded Value="True"/>
</Unit31>
<Unit32>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\sysutils\sysstr.inc"/>
<CursorPos X="6" Y="44"/>
<TopLine Value="30"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit32>
<Unit33>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\win\sysosh.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="51"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit33>
<Unit34>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\objpash.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="322"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit34>
<Unit35>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\varianth.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit35>
<Unit36>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\rtti.inc"/>
<CursorPos X="21" Y="77"/>
<TopLine Value="5"/>
<EditorIndex Value="6"/>
<UsageCount Value="24"/>
<EditorIndex Value="7"/>
<UsageCount Value="28"/>
<Loaded Value="True"/>
</Unit36>
<Unit37>
@ -328,8 +328,8 @@
<UnitName Value="metadata_service"/>
<CursorPos X="26" Y="13"/>
<TopLine Value="1"/>
<EditorIndex Value="9"/>
<UsageCount Value="20"/>
<EditorIndex Value="10"/>
<UsageCount Value="24"/>
<Loaded Value="True"/>
</Unit37>
<Unit38>
@ -337,15 +337,15 @@
<UnitName Value="cursor_intf"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="10"/>
<UsageCount Value="20"/>
<EditorIndex Value="11"/>
<UsageCount Value="24"/>
<Loaded Value="True"/>
</Unit38>
<Unit39>
<Filename Value="..\user_service_intf.wst"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
<SyntaxHighlighter Value="None"/>
</Unit39>
<Unit40>
@ -353,15 +353,15 @@
<UnitName Value="DOM"/>
<CursorPos X="42" Y="228"/>
<TopLine Value="215"/>
<UsageCount Value="17"/>
<UsageCount Value="16"/>
</Unit40>
<Unit41>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\typinfo.pp"/>
<UnitName Value="typinfo"/>
<CursorPos X="46" Y="371"/>
<TopLine Value="366"/>
<EditorIndex Value="23"/>
<UsageCount Value="18"/>
<EditorIndex Value="24"/>
<UsageCount Value="22"/>
<Loaded Value="True"/>
</Unit41>
<Unit42>
@ -369,8 +369,8 @@
<UnitName Value="user_service_intf_proxy"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="18"/>
<UsageCount Value="17"/>
<EditorIndex Value="19"/>
<UsageCount Value="21"/>
<Loaded Value="True"/>
</Unit42>
<Unit43>
@ -378,7 +378,7 @@
<UnitName Value="IdCustomHTTPServer"/>
<CursorPos X="14" Y="252"/>
<TopLine Value="239"/>
<UsageCount Value="11"/>
<UsageCount Value="10"/>
</Unit43>
<Unit44>
<Filename Value="..\..\type_lib_edtr\uabout.pas"/>
@ -388,7 +388,7 @@
<UnitName Value="uabout"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="11"/>
<UsageCount Value="10"/>
</Unit44>
<Unit45>
<Filename Value="..\..\type_lib_edtr\uwsttypelibraryedit.pas"/>
@ -397,7 +397,7 @@
<UnitName Value="uwsttypelibraryedit"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit45>
<Unit46>
<Filename Value="..\..\ide\lazarus\wstimportdlg.pas"/>
@ -407,43 +407,76 @@
<UnitName Value="wstimportdlg"/>
<CursorPos X="27" Y="7"/>
<TopLine Value="1"/>
<UsageCount Value="11"/>
<UsageCount Value="10"/>
</Unit46>
<Unit47>
<Filename Value="..\..\indy_http_server.pas"/>
<UnitName Value="indy_http_server"/>
<CursorPos X="20" Y="20"/>
<TopLine Value="8"/>
<CursorPos X="36" Y="205"/>
<TopLine Value="197"/>
<EditorIndex Value="1"/>
<UsageCount Value="10"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit47>
<Unit48>
<Filename Value="..\..\server_listener.pas"/>
<UnitName Value="server_listener"/>
<CursorPos X="21" Y="15"/>
<TopLine Value="12"/>
<EditorIndex Value="2"/>
<UsageCount Value="13"/>
<Loaded Value="True"/>
</Unit48>
</Units>
<JumpHistory Count="6" HistoryIndex="5">
<JumpHistory Count="12" HistoryIndex="11">
<Position1>
<Filename Value="..\..\indy_http_server.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
<Filename Value="http_server.pas"/>
<Caret Line="16" Column="28" TopLine="1"/>
</Position1>
<Position2>
<Filename Value="..\..\indy_http_server.pas"/>
<Caret Line="160" Column="20" TopLine="147"/>
<Filename Value="http_server.pas"/>
<Caret Line="14" Column="19" TopLine="1"/>
</Position2>
<Position3>
<Filename Value="..\..\indy_http_server.pas"/>
<Caret Line="1" Column="1" TopLine="28"/>
<Filename Value="http_server.pas"/>
<Caret Line="23" Column="15" TopLine="1"/>
</Position3>
<Position4>
<Filename Value="..\..\indy_http_server.pas"/>
<Caret Line="102" Column="11" TopLine="84"/>
<Caret Line="47" Column="37" TopLine="28"/>
</Position4>
<Position5>
<Filename Value="..\..\indy_http_server.pas"/>
<Caret Line="359" Column="76" TopLine="346"/>
<Filename Value="http_server.pas"/>
<Caret Line="10" Column="72" TopLine="1"/>
</Position5>
<Position6>
<Filename Value="..\..\indy_http_server.pas"/>
<Caret Line="20" Column="5" TopLine="1"/>
<Filename Value="http_server.pas"/>
<Caret Line="23" Column="23" TopLine="2"/>
</Position6>
<Position7>
<Filename Value="http_server.pas"/>
<Caret Line="16" Column="33" TopLine="2"/>
</Position7>
<Position8>
<Filename Value="..\..\indy_http_server.pas"/>
<Caret Line="213" Column="17" TopLine="200"/>
</Position8>
<Position9>
<Filename Value="..\..\indy_http_server.pas"/>
<Caret Line="219" Column="25" TopLine="207"/>
</Position9>
<Position10>
<Filename Value="..\..\indy_http_server.pas"/>
<Caret Line="220" Column="29" TopLine="206"/>
</Position10>
<Position11>
<Filename Value="..\..\indy_http_server.pas"/>
<Caret Line="181" Column="19" TopLine="168"/>
</Position11>
<Position12>
<Filename Value="..\..\indy_http_server.pas"/>
<Caret Line="221" Column="31" TopLine="206"/>
</Position12>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>
@ -466,8 +499,15 @@
<CodeGeneration>
<Generate Value="Faster"/>
</CodeGeneration>
<Linking>
<Debugging>
<UseLineInfoUnit Value="False"/>
</Debugging>
<LinkSmart Value="True"/>
</Linking>
<Other>
<CustomOptions Value="-dINDY_10"/>
<CustomOptions Value="-dINDY_10
"/>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>

View File

@ -7,19 +7,20 @@ uses
cthreads,
{$ENDIF}{$ENDIF}
Classes, SysUtils,
indy_http_server, metadata_service, logger_extension;
indy_http_server, metadata_service, logger_extension, server_listener;
var
AppObject : TwstWebApplication;
AppObject : TwstListener;
begin
AppObject := TwstWebApplication.Create();
AppObject := TwstIndyHttpListener.Create();
try
WriteLn('"Web Service Toolkit" HTTP Server sample listening at:');
WriteLn('');
WriteLn('http://127.0.0.1:8000/');
WriteLn('');
WriteLn('Press enter to quit.');
AppObject.Start();
ReadLn();
finally
FreeAndNil(AppObject);

View File

@ -7,7 +7,7 @@
<MainUnit Value="0"/>
<IconPath Value=".\"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="2"/>
<ActiveEditorIndexAtStart Value="0"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
@ -25,24 +25,24 @@
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
<Units Count="7">
<Units Count="8">
<Unit0>
<Filename Value="lib_server.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="lib_server"/>
<CursorPos X="17" Y="32"/>
<TopLine Value="17"/>
<CursorPos X="49" Y="35"/>
<TopLine Value="7"/>
<EditorIndex Value="0"/>
<UsageCount Value="23"/>
<UsageCount Value="27"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="..\..\library_server_intf.pas"/>
<UnitName Value="library_server_intf"/>
<CursorPos X="74" Y="92"/>
<TopLine Value="78"/>
<CursorPos X="32" Y="91"/>
<TopLine Value="1"/>
<EditorIndex Value="2"/>
<UsageCount Value="12"/>
<UsageCount Value="13"/>
<Loaded Value="True"/>
</Unit1>
<Unit2>
@ -50,8 +50,8 @@
<UnitName Value="user_service_intf_imp"/>
<CursorPos X="43" Y="179"/>
<TopLine Value="157"/>
<EditorIndex Value="4"/>
<UsageCount Value="12"/>
<EditorIndex Value="5"/>
<UsageCount Value="13"/>
<Loaded Value="True"/>
</Unit2>
<Unit3>
@ -59,17 +59,17 @@
<UnitName Value="rtti_filters"/>
<CursorPos X="53" Y="43"/>
<TopLine Value="184"/>
<EditorIndex Value="6"/>
<UsageCount Value="12"/>
<EditorIndex Value="7"/>
<UsageCount Value="13"/>
<Loaded Value="True"/>
</Unit3>
<Unit4>
<Filename Value="..\user_service_intf_binder.pas"/>
<UnitName Value="user_service_intf_binder"/>
<CursorPos X="54" Y="32"/>
<TopLine Value="22"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="64"/>
<EditorIndex Value="1"/>
<UsageCount Value="12"/>
<UsageCount Value="13"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
@ -77,8 +77,8 @@
<UnitName Value="base_service_intf"/>
<CursorPos X="52" Y="4125"/>
<TopLine Value="4118"/>
<EditorIndex Value="5"/>
<UsageCount Value="12"/>
<EditorIndex Value="6"/>
<UsageCount Value="13"/>
<Loaded Value="True"/>
</Unit5>
<Unit6>
@ -86,29 +86,21 @@
<UnitName Value="semaphore"/>
<CursorPos X="1" Y="96"/>
<TopLine Value="72"/>
<EditorIndex Value="3"/>
<UsageCount Value="12"/>
<EditorIndex Value="4"/>
<UsageCount Value="13"/>
<Loaded Value="True"/>
</Unit6>
<Unit7>
<Filename Value="..\..\wst_rtti_filter\cursor_intf.pas"/>
<UnitName Value="cursor_intf"/>
<CursorPos X="2" Y="13"/>
<TopLine Value="34"/>
<EditorIndex Value="3"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit7>
</Units>
<JumpHistory Count="4" HistoryIndex="3">
<Position1>
<Filename Value="lib_server.lpr"/>
<Caret Line="32" Column="17" TopLine="17"/>
</Position1>
<Position2>
<Filename Value="..\..\semaphore.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position2>
<Position3>
<Filename Value="..\..\library_server_intf.pas"/>
<Caret Line="61" Column="3" TopLine="47"/>
</Position3>
<Position4>
<Filename Value="..\..\library_server_intf.pas"/>
<Caret Line="92" Column="71" TopLine="27"/>
</Position4>
</JumpHistory>
<JumpHistory Count="0" HistoryIndex="-1"/>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
@ -117,6 +109,7 @@
<Filename Value="lib_server.dll"/>
</Target>
<SearchPaths>
<IncludeFiles Value="..\..\"/>
<OtherUnitFiles Value="..\;..\..\;..\..\wst_rtti_filter\"/>
<UnitOutputDirectory Value="obj"/>
</SearchPaths>
@ -124,6 +117,10 @@
<Generate Value="Faster"/>
</CodeGeneration>
<Linking>
<Debugging>
<UseLineInfoUnit Value="False"/>
</Debugging>
<LinkSmart Value="True"/>
<Options>
<ExecutableType Value="Library"/>
</Options>

View File

@ -19,7 +19,7 @@ uses
base_service_intf,
server_service_intf,
server_service_soap, server_binary_formatter,
server_service_soap, server_binary_formatter, server_service_xmlrpc,
metadata_repository, metadata_wsdl,
metadata_service, metadata_service_binder, metadata_service_imp,
library_base_intf, library_server_intf,
@ -35,10 +35,12 @@ begin
RegisterStdTypes();
Server_service_RegisterBinaryFormat();
Server_service_RegisterSoapFormat();
Server_service_RegisterXmlRpcFormat();
RegisterUserServiceImplementationFactory();
Server_service_RegisterUserServiceService();
Server_service_RegisterWSTMetadataServiceService();
RegisterWSTMetadataServiceImplementationFactory();
Server_service_RegisterWSTMetadataServiceService();
end.

View File

@ -12,7 +12,7 @@
<MainUnit Value="0"/>
<IconPath Value=".\"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="10"/>
<ActiveEditorIndexAtStart Value="12"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
@ -30,15 +30,15 @@
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
<Units Count="47">
<Units Count="50">
<Unit0>
<Filename Value="tcp_server.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="tcp_server"/>
<CursorPos X="1" Y="56"/>
<TopLine Value="30"/>
<CursorPos X="1" Y="53"/>
<TopLine Value="29"/>
<EditorIndex Value="0"/>
<UsageCount Value="79"/>
<UsageCount Value="83"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
@ -80,7 +80,7 @@
<CursorPos X="53" Y="177"/>
<TopLine Value="157"/>
<EditorIndex Value="2"/>
<UsageCount Value="27"/>
<UsageCount Value="29"/>
<Loaded Value="True"/>
</Unit6>
<Unit7>
@ -117,8 +117,8 @@
<UnitName Value="user_service_intf"/>
<CursorPos X="3" Y="27"/>
<TopLine Value="5"/>
<EditorIndex Value="9"/>
<UsageCount Value="79"/>
<EditorIndex Value="10"/>
<UsageCount Value="83"/>
<Loaded Value="True"/>
</Unit11>
<Unit12>
@ -127,7 +127,7 @@
<CursorPos X="15" Y="307"/>
<TopLine Value="293"/>
<EditorIndex Value="5"/>
<UsageCount Value="29"/>
<UsageCount Value="31"/>
<Bookmarks Count="1">
<Item0 X="19" Y="545" ID="0"/>
</Bookmarks>
@ -138,8 +138,8 @@
<UnitName Value="std_cursors"/>
<CursorPos X="14" Y="21"/>
<TopLine Value="7"/>
<EditorIndex Value="12"/>
<UsageCount Value="34"/>
<EditorIndex Value="14"/>
<UsageCount Value="36"/>
<Loaded Value="True"/>
</Unit13>
<Unit14>
@ -154,8 +154,8 @@
<UnitName Value="user_service_intf_binder"/>
<CursorPos X="48" Y="34"/>
<TopLine Value="11"/>
<EditorIndex Value="8"/>
<UsageCount Value="37"/>
<EditorIndex Value="9"/>
<UsageCount Value="39"/>
<Loaded Value="True"/>
</Unit15>
<Unit16>
@ -218,10 +218,10 @@
<Unit25>
<Filename Value="..\..\server_service_intf.pas"/>
<UnitName Value="server_service_intf"/>
<CursorPos X="1" Y="356"/>
<TopLine Value="342"/>
<EditorIndex Value="7"/>
<UsageCount Value="15"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="46"/>
<EditorIndex Value="8"/>
<UsageCount Value="17"/>
<Loaded Value="True"/>
</Unit25>
<Unit26>
@ -233,10 +233,10 @@
<Unit27>
<Filename Value="..\user_service_intf_imp.pas"/>
<UnitName Value="user_service_intf_imp"/>
<CursorPos X="1" Y="63"/>
<TopLine Value="107"/>
<EditorIndex Value="10"/>
<UsageCount Value="39"/>
<CursorPos X="1" Y="56"/>
<TopLine Value="40"/>
<EditorIndex Value="11"/>
<UsageCount Value="41"/>
<Loaded Value="True"/>
</Unit27>
<Unit28>
@ -273,7 +273,7 @@
<UnitName Value="imp_helper"/>
<CursorPos X="1" Y="44"/>
<TopLine Value="32"/>
<UsageCount Value="48"/>
<UsageCount Value="52"/>
</Unit32>
<Unit33>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\classes\persist.inc"/>
@ -297,10 +297,10 @@
<Unit36>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<UnitName Value="synapse_tcp_server"/>
<CursorPos X="1" Y="209"/>
<TopLine Value="26"/>
<CursorPos X="3" Y="325"/>
<TopLine Value="309"/>
<EditorIndex Value="6"/>
<UsageCount Value="17"/>
<UsageCount Value="19"/>
<Loaded Value="True"/>
</Unit36>
<Unit37>
@ -315,7 +315,7 @@
<CursorPos X="4" Y="6"/>
<TopLine Value="1"/>
<EditorIndex Value="1"/>
<UsageCount Value="14"/>
<UsageCount Value="16"/>
<Loaded Value="True"/>
</Unit38>
<Unit39>
@ -335,8 +335,8 @@
<UnitName Value="blcksock"/>
<CursorPos X="1" Y="2407"/>
<TopLine Value="2393"/>
<EditorIndex Value="11"/>
<UsageCount Value="11"/>
<EditorIndex Value="13"/>
<UsageCount Value="13"/>
<Loaded Value="True"/>
</Unit41>
<Unit42>
@ -346,7 +346,7 @@
<CursorPos X="1" Y="83"/>
<TopLine Value="69"/>
<EditorIndex Value="3"/>
<UsageCount Value="30"/>
<UsageCount Value="34"/>
<Loaded Value="True"/>
</Unit42>
<Unit43>
@ -355,7 +355,7 @@
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="4"/>
<UsageCount Value="14"/>
<UsageCount Value="16"/>
<Loaded Value="True"/>
</Unit43>
<Unit44>
@ -377,127 +377,151 @@
<TopLine Value="469"/>
<UsageCount Value="10"/>
</Unit46>
<Unit47>
<Filename Value="..\..\server_listener.pas"/>
<UnitName Value="server_listener"/>
<CursorPos X="3" Y="28"/>
<TopLine Value="14"/>
<EditorIndex Value="7"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit47>
<Unit48>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\objpash.inc"/>
<CursorPos X="23" Y="147"/>
<TopLine Value="133"/>
<UsageCount Value="10"/>
</Unit48>
<Unit49>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\others_package\synapse\blcksock.pas"/>
<UnitName Value="blcksock"/>
<CursorPos X="1" Y="2407"/>
<TopLine Value="2393"/>
<EditorIndex Value="12"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit49>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="182" Column="36" TopLine="168"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="302" Column="5" TopLine="270"/>
</Position1>
<Position2>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="191" Column="32" TopLine="176"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="308" Column="5" TopLine="276"/>
</Position2>
<Position3>
<Filename Value="tcp_server.pas"/>
<Caret Line="42" Column="5" TopLine="14"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="287" Column="54" TopLine="267"/>
</Position3>
<Position4>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="88" Column="1" TopLine="74"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="75" Column="1" TopLine="62"/>
</Position4>
<Position5>
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
<Caret Line="1198" Column="1" TopLine="1184"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="79" Column="1" TopLine="76"/>
</Position5>
<Position6>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="88" Column="1" TopLine="74"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="46" Column="17" TopLine="32"/>
</Position6>
<Position7>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="89" Column="1" TopLine="75"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="205" Column="104" TopLine="191"/>
</Position7>
<Position8>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="93" Column="62" TopLine="76"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="254" Column="35" TopLine="240"/>
</Position8>
<Position9>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="92" Column="26" TopLine="74"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="61" Column="24" TopLine="47"/>
</Position9>
<Position10>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="111" Column="1" TopLine="97"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="226" Column="19" TopLine="221"/>
</Position10>
<Position11>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="112" Column="1" TopLine="98"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="256" Column="56" TopLine="242"/>
</Position11>
<Position12>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="113" Column="1" TopLine="99"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="263" Column="1" TopLine="247"/>
</Position12>
<Position13>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="89" Column="1" TopLine="75"/>
<Filename Value="tcp_server.pas"/>
<Caret Line="30" Column="17" TopLine="15"/>
</Position13>
<Position14>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="91" Column="1" TopLine="77"/>
<Filename Value="tcp_server.pas"/>
<Caret Line="39" Column="1" TopLine="25"/>
</Position14>
<Position15>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="92" Column="1" TopLine="78"/>
<Filename Value="tcp_server.pas"/>
<Caret Line="51" Column="11" TopLine="28"/>
</Position15>
<Position16>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="93" Column="1" TopLine="79"/>
<Filename Value="tcp_server.pas"/>
<Caret Line="30" Column="26" TopLine="28"/>
</Position16>
<Position17>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="76" Column="19" TopLine="62"/>
<Filename Value="tcp_server.pas"/>
<Caret Line="52" Column="31" TopLine="28"/>
</Position17>
<Position18>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="54" Column="1" TopLine="42"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="300" Column="1" TopLine="266"/>
</Position18>
<Position19>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="83" Column="47" TopLine="62"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="81" Column="41" TopLine="63"/>
</Position19>
<Position20>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="56" Column="1" TopLine="40"/>
<Filename Value="tcp_server.pas"/>
<Caret Line="52" Column="40" TopLine="28"/>
</Position20>
<Position21>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="76" Column="1" TopLine="62"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="81" Column="50" TopLine="65"/>
</Position21>
<Position22>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="54" Column="1" TopLine="40"/>
<Filename Value="tcp_server.pas"/>
<Caret Line="52" Column="40" TopLine="28"/>
</Position22>
<Position23>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="56" Column="1" TopLine="42"/>
<Filename Value="tcp_server.pas"/>
<Caret Line="53" Column="16" TopLine="29"/>
</Position23>
<Position24>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="54" Column="1" TopLine="40"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="315" Column="5" TopLine="283"/>
</Position24>
<Position25>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="63" Column="1" TopLine="49"/>
<Filename Value="tcp_server.pas"/>
<Caret Line="37" Column="19" TopLine="29"/>
</Position25>
<Position26>
<Filename Value="..\..\..\..\..\..\lazarus_23_215\others_package\synapse\blcksock.pas"/>
<Caret Line="2407" Column="1" TopLine="2393"/>
<Filename Value="tcp_server.pas"/>
<Caret Line="52" Column="21" TopLine="29"/>
</Position26>
<Position27>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="64" Column="52" TopLine="40"/>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="267" Column="24" TopLine="247"/>
</Position27>
<Position28>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="56" Column="1" TopLine="42"/>
<Filename Value="tcp_server.pas"/>
<Caret Line="52" Column="27" TopLine="29"/>
</Position28>
<Position29>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="63" Column="1" TopLine="49"/>
<Filename Value="tcp_server.pas"/>
<Caret Line="53" Column="1" TopLine="29"/>
</Position29>
<Position30>
<Filename Value="..\..\..\..\..\..\lazarus_23_215\others_package\synapse\blcksock.pas"/>
<Caret Line="2407" Column="1" TopLine="2393"/>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="56" Column="1" TopLine="40"/>
</Position30>
</JumpHistory>
</ProjectOptions>
@ -526,7 +550,7 @@
</Other>
</CompilerOptions>
<Debugging>
<BreakPoints Count="8">
<BreakPoints Count="6">
<Item1>
<Source Value="D:\lazarusClean\fpcsrc\rtl\inc\getopts.pp"/>
<Line Value="230"/>
@ -551,14 +575,6 @@
<Source Value="..\user_service_intf_imp.pas"/>
<Line Value="88"/>
</Item6>
<Item7>
<Source Value="..\user_service_intf_imp.pas"/>
<Line Value="54"/>
</Item7>
<Item8>
<Source Value="..\user_service_intf_imp.pas"/>
<Line Value="56"/>
</Item8>
</BreakPoints>
<Watches Count="2">
<Item1>

View File

@ -27,19 +27,17 @@ uses
base_service_intf, server_service_soap,
base_binary_formatter, server_binary_formatter,
metadata_service, metadata_service_imp, metadata_service_binder,
synapse_tcp_server,
server_listener ,synapse_tcp_server,
user_service_intf, user_service_intf_binder, user_service_intf_imp , imp_helper,
server_service_xmlrpc;
var
listnerThread : TServerListnerThread;
listener : TwstListener;
begin
SetLogger(TConsoleLogger.Create());
Server_service_RegisterBinaryFormat();
//Server_service_RegisterSoapFormat();
Server_service_RegisterSoapFormat();
Server_service_RegisterXmlRpcFormat();
RegisterWSTMetadataServiceImplementationFactory();
@ -49,9 +47,10 @@ begin
RegisterUserServiceImplementationFactory();
Server_service_RegisterUserServiceService();
Logger().Log('WST sample TCP Server listning on "%s"',[sSERVER_PORT]);
Logger().Log('Hit <enter> to stop.');
listnerThread := TServerListnerThread.Create();
WriteLn(Format('WST sample TCP Server listning on "%d"',[sSERVER_PORT]));
WriteLn('Hit <enter> to stop.');
listener := TwstSynapseTcpListener.Create();
listener.Start();
ReadLn;
end.

View File

@ -12,7 +12,7 @@
<MainUnit Value="0"/>
<IconPath Value=".\"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="2"/>
<ActiveEditorIndexAtStart Value="0"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
@ -30,120 +30,116 @@
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
<Units Count="35">
<Units Count="42">
<Unit0>
<Filename Value="user_client_console.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="user_client_console"/>
<CursorPos X="15" Y="9"/>
<TopLine Value="1"/>
<CursorPos X="26" Y="148"/>
<TopLine Value="133"/>
<EditorIndex Value="0"/>
<UsageCount Value="64"/>
<UsageCount Value="75"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="..\user_service_intf_proxy.pas"/>
<UnitName Value="user_service_intf_proxy"/>
<CursorPos X="74" Y="12"/>
<CursorPos X="57" Y="12"/>
<TopLine Value="1"/>
<EditorIndex Value="9"/>
<UsageCount Value="30"/>
<Loaded Value="True"/>
</Unit1>
<Unit2>
<Filename Value="..\..\synapse_tcp_protocol.pas"/>
<UnitName Value="synapse_tcp_protocol"/>
<CursorPos X="29" Y="132"/>
<TopLine Value="5"/>
<EditorIndex Value="15"/>
<UsageCount Value="32"/>
<CursorPos X="32" Y="104"/>
<TopLine Value="90"/>
<EditorIndex Value="11"/>
<UsageCount Value="37"/>
<Loaded Value="True"/>
</Unit2>
<Unit3>
<Filename Value="..\..\service_intf.pas"/>
<UnitName Value="service_intf"/>
<CursorPos X="38" Y="2"/>
<TopLine Value="1"/>
<UsageCount Value="28"/>
<CursorPos X="51" Y="34"/>
<TopLine Value="21"/>
<EditorIndex Value="8"/>
<UsageCount Value="33"/>
<Loaded Value="True"/>
</Unit3>
<Unit4>
<Filename Value="..\user_service_intf.pas"/>
<UnitName Value="user_service_intf"/>
<CursorPos X="53" Y="11"/>
<TopLine Value="1"/>
<EditorIndex Value="4"/>
<UsageCount Value="29"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
<Filename Value="..\..\..\..\..\lazarus23_213\others_package\synapse\blcksock.pas"/>
<UnitName Value="blcksock"/>
<CursorPos X="60" Y="2413"/>
<TopLine Value="2393"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit5>
<Unit6>
<Filename Value="..\..\base_service_intf.pas"/>
<UnitName Value="base_service_intf"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="6"/>
<UsageCount Value="32"/>
<Loaded Value="True"/>
</Unit6>
<Unit7>
<Filename Value="..\..\library_protocol.pas"/>
<UnitName Value="library_protocol"/>
<CursorPos X="1" Y="13"/>
<TopLine Value="1"/>
<CursorPos X="57" Y="57"/>
<TopLine Value="2"/>
<EditorIndex Value="7"/>
<UsageCount Value="20"/>
<UsageCount Value="25"/>
<Loaded Value="True"/>
</Unit7>
<Unit8>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\sysutils\finah.inc"/>
<CursorPos X="10" Y="33"/>
<TopLine Value="17"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit8>
<Unit9>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\sysutils\fina.inc"/>
<CursorPos X="13" Y="112"/>
<TopLine Value="105"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit9>
<Unit10>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\sysutils\sysutilh.inc"/>
<CursorPos X="33" Y="202"/>
<TopLine Value="188"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit10>
<Unit11>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\win32\system.pp"/>
<UnitName Value="System"/>
<CursorPos X="20" Y="35"/>
<TopLine Value="21"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit11>
<Unit12>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\inc\fexpand.inc"/>
<CursorPos X="10" Y="86"/>
<TopLine Value="226"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit12>
<Unit13>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\sysutils\sysstrh.inc"/>
<CursorPos X="54" Y="33"/>
<TopLine Value="19"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit13>
<Unit14>
<Filename Value="..\..\synapse_http_protocol.pas"/>
<UnitName Value="synapse_http_protocol"/>
<CursorPos X="19" Y="16"/>
<TopLine Value="3"/>
<EditorIndex Value="2"/>
<UsageCount Value="14"/>
<CursorPos X="15" Y="59"/>
<TopLine Value="45"/>
<EditorIndex Value="6"/>
<UsageCount Value="19"/>
<Loaded Value="True"/>
</Unit14>
<Unit15>
@ -151,129 +147,121 @@
<UnitName Value="metadata_repository"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="14"/>
<UsageCount Value="13"/>
</Unit15>
<Unit16>
<Filename Value="..\..\wst.inc"/>
<CursorPos X="17" Y="15"/>
<TopLine Value="1"/>
<UsageCount Value="14"/>
<UsageCount Value="13"/>
</Unit16>
<Unit17>
<Filename Value="..\..\library_imp_utils.pas"/>
<UnitName Value="library_imp_utils"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit17>
<Unit18>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\win\dynlibs.inc"/>
<CursorPos X="17" Y="27"/>
<TopLine Value="13"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit18>
<Unit19>
<Filename Value="..\..\semaphore.pas"/>
<UnitName Value="semaphore"/>
<CursorPos X="1" Y="96"/>
<TopLine Value="72"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit19>
<Unit20>
<Filename Value="..\..\soap_formatter.pas"/>
<UnitName Value="soap_formatter"/>
<CursorPos X="8" Y="96"/>
<TopLine Value="83"/>
<EditorIndex Value="1"/>
<UsageCount Value="17"/>
<CursorPos X="3" Y="232"/>
<TopLine Value="221"/>
<EditorIndex Value="5"/>
<UsageCount Value="22"/>
<Loaded Value="True"/>
</Unit20>
<Unit21>
<Filename Value="..\..\xmlrpc_formatter.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="xmlrpc_formatter"/>
<CursorPos X="25" Y="72"/>
<TopLine Value="65"/>
<EditorIndex Value="8"/>
<UsageCount Value="50"/>
<Loaded Value="True"/>
<CursorPos X="54" Y="21"/>
<TopLine Value="1"/>
<UsageCount Value="61"/>
</Unit21>
<Unit22>
<Filename Value="..\..\binary_formatter.pas"/>
<UnitName Value="binary_formatter"/>
<CursorPos X="20" Y="21"/>
<TopLine Value="1"/>
<EditorIndex Value="11"/>
<UsageCount Value="25"/>
<TopLine Value="12"/>
<EditorIndex Value="9"/>
<UsageCount Value="30"/>
<Loaded Value="True"/>
</Unit22>
<Unit23>
<Filename Value="..\..\wst_delphi.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit23>
<Unit24>
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
<UnitName Value="base_xmlrpc_formatter"/>
<CursorPos X="20" Y="1346"/>
<TopLine Value="1326"/>
<EditorIndex Value="10"/>
<CursorPos X="25" Y="31"/>
<TopLine Value="16"/>
<UsageCount Value="25"/>
<Loaded Value="True"/>
</Unit24>
<Unit25>
<Filename Value="..\..\base_soap_formatter.pas"/>
<UnitName Value="base_soap_formatter"/>
<CursorPos X="56" Y="334"/>
<TopLine Value="319"/>
<EditorIndex Value="5"/>
<CursorPos X="3" Y="40"/>
<TopLine Value="22"/>
<UsageCount Value="24"/>
<Loaded Value="True"/>
</Unit25>
<Unit26>
<Filename Value="..\..\..\..\..\..\lazarus_23_215\fpc\2.1.5\source\rtl\objpas\classes\classesh.inc"/>
<CursorPos X="3" Y="592"/>
<TopLine Value="590"/>
<UsageCount Value="12"/>
<UsageCount Value="11"/>
</Unit26>
<Unit27>
<Filename Value="..\..\..\..\..\..\lazarus_23_215\fpc\2.1.5\source\rtl\objpas\typinfo.pp"/>
<UnitName Value="typinfo"/>
<CursorPos X="1" Y="483"/>
<TopLine Value="469"/>
<UsageCount Value="12"/>
<UsageCount Value="11"/>
</Unit27>
<Unit28>
<Filename Value="..\..\..\..\..\..\lazarus_23_215\others_package\synapse\blcksock.pas"/>
<UnitName Value="blcksock"/>
<CursorPos X="1" Y="2407"/>
<TopLine Value="2393"/>
<UsageCount Value="12"/>
<UsageCount Value="11"/>
</Unit28>
<Unit29>
<Filename Value="..\..\..\..\..\..\lazarus_23_215\fpc\2.1.5\source\packages\fcl-xml\src\xmlread.pp"/>
<UnitName Value="XMLRead"/>
<CursorPos X="1" Y="2763"/>
<TopLine Value="2749"/>
<UsageCount Value="12"/>
<UsageCount Value="11"/>
</Unit29>
<Unit30>
<Filename Value="..\..\imp_utils.pas"/>
<UnitName Value="imp_utils"/>
<CursorPos X="26" Y="13"/>
<CursorPos X="41" Y="3"/>
<TopLine Value="1"/>
<EditorIndex Value="3"/>
<UsageCount Value="15"/>
<Loaded Value="True"/>
</Unit30>
<Unit31>
<Filename Value="..\..\wst_fpc_xml.pas"/>
<UnitName Value="wst_fpc_xml"/>
<CursorPos X="34" Y="67"/>
<TopLine Value="54"/>
<EditorIndex Value="13"/>
<UsageCount Value="15"/>
<TopLine Value="42"/>
<EditorIndex Value="10"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
</Unit31>
<Unit32>
@ -281,28 +269,186 @@
<UnitName Value="typinfo"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="34"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit32>
<Unit33>
<Filename Value="..\..\base_binary_formatter.pas"/>
<UnitName Value="base_binary_formatter"/>
<CursorPos X="35" Y="1496"/>
<TopLine Value="1483"/>
<EditorIndex Value="12"/>
<CursorPos X="22" Y="27"/>
<TopLine Value="10"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit33>
<Unit34>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<UnitName Value="DOM"/>
<CursorPos X="14" Y="287"/>
<TopLine Value="274"/>
<EditorIndex Value="14"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit34>
<Unit35>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\others_package\synapse\httpsend.pas"/>
<UnitName Value="httpsend"/>
<CursorPos X="23" Y="72"/>
<TopLine Value="143"/>
<UsageCount Value="10"/>
</Unit35>
<Unit36>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\others_package\synapse\blcksock.pas"/>
<UnitName Value="blcksock"/>
<CursorPos X="3" Y="1325"/>
<TopLine Value="1279"/>
<UsageCount Value="10"/>
</Unit36>
<Unit37>
<Filename Value="..\..\indy_http_protocol.pas"/>
<UnitName Value="indy_http_protocol"/>
<CursorPos X="1" Y="16"/>
<TopLine Value="109"/>
<EditorIndex Value="4"/>
<UsageCount Value="15"/>
<Loaded Value="True"/>
</Unit37>
<Unit38>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\others_package\indy\indy-10.2.0.1\fpc\Protocols\IdHTTP.pas"/>
<UnitName Value="IdHTTP"/>
<CursorPos X="49" Y="343"/>
<TopLine Value="582"/>
<UsageCount Value="9"/>
</Unit38>
<Unit39>
<Filename Value="..\..\ics_tcp_protocol.pas"/>
<UnitName Value="ics_tcp_protocol"/>
<CursorPos X="59" Y="66"/>
<TopLine Value="40"/>
<EditorIndex Value="3"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit39>
<Unit40>
<Filename Value="..\..\ics_http_protocol.pas"/>
<UnitName Value="ics_http_protocol"/>
<CursorPos X="55" Y="72"/>
<TopLine Value="128"/>
<EditorIndex Value="2"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit40>
<Unit41>
<Filename Value="..\..\same_process_protocol.pas"/>
<UnitName Value="same_process_protocol"/>
<CursorPos X="77" Y="83"/>
<TopLine Value="31"/>
<EditorIndex Value="1"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit41>
</Units>
<JumpHistory Count="0" HistoryIndex="-1"/>
<JumpHistory Count="26" HistoryIndex="25">
<Position1>
<Filename Value="user_client_console.pas"/>
<Caret Line="8" Column="12" TopLine="1"/>
</Position1>
<Position2>
<Filename Value="..\..\synapse_tcp_protocol.pas"/>
<Caret Line="40" Column="22" TopLine="34"/>
</Position2>
<Position3>
<Filename Value="user_client_console.pas"/>
<Caret Line="8" Column="70" TopLine="1"/>
</Position3>
<Position4>
<Filename Value="..\..\ics_tcp_protocol.pas"/>
<Caret Line="51" Column="22" TopLine="43"/>
</Position4>
<Position5>
<Filename Value="..\..\ics_tcp_protocol.pas"/>
<Caret Line="178" Column="32" TopLine="161"/>
</Position5>
<Position6>
<Filename Value="..\..\indy_http_protocol.pas"/>
<Caret Line="39" Column="22" TopLine="38"/>
</Position6>
<Position7>
<Filename Value="..\..\synapse_http_protocol.pas"/>
<Caret Line="41" Column="22" TopLine="40"/>
</Position7>
<Position8>
<Filename Value="..\..\ics_http_protocol.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position8>
<Position9>
<Filename Value="..\..\ics_http_protocol.pas"/>
<Caret Line="196" Column="16" TopLine="177"/>
</Position9>
<Position10>
<Filename Value="..\..\ics_tcp_protocol.pas"/>
<Caret Line="13" Column="3" TopLine="52"/>
</Position10>
<Position11>
<Filename Value="..\..\indy_http_protocol.pas"/>
<Caret Line="67" Column="55" TopLine="46"/>
</Position11>
<Position12>
<Filename Value="..\..\ics_tcp_protocol.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position12>
<Position13>
<Filename Value="..\..\ics_tcp_protocol.pas"/>
<Caret Line="105" Column="34" TopLine="91"/>
</Position13>
<Position14>
<Filename Value="..\..\ics_tcp_protocol.pas"/>
<Caret Line="114" Column="31" TopLine="100"/>
</Position14>
<Position15>
<Filename Value="..\..\ics_tcp_protocol.pas"/>
<Caret Line="124" Column="33" TopLine="110"/>
</Position15>
<Position16>
<Filename Value="..\..\ics_tcp_protocol.pas"/>
<Caret Line="145" Column="47" TopLine="131"/>
</Position16>
<Position17>
<Filename Value="user_client_console.pas"/>
<Caret Line="8" Column="19" TopLine="1"/>
</Position17>
<Position18>
<Filename Value="..\..\ics_http_protocol.pas"/>
<Caret Line="53" Column="22" TopLine="52"/>
</Position18>
<Position19>
<Filename Value="..\..\same_process_protocol.pas"/>
<Caret Line="39" Column="22" TopLine="28"/>
</Position19>
<Position20>
<Filename Value="..\..\same_process_protocol.pas"/>
<Caret Line="83" Column="3" TopLine="70"/>
</Position20>
<Position21>
<Filename Value="user_client_console.pas"/>
<Caret Line="148" Column="19" TopLine="211"/>
</Position21>
<Position22>
<Filename Value="user_client_console.pas"/>
<Caret Line="6" Column="63" TopLine="1"/>
</Position22>
<Position23>
<Filename Value="user_client_console.pas"/>
<Caret Line="226" Column="1" TopLine="217"/>
</Position23>
<Position24>
<Filename Value="user_client_console.pas"/>
<Caret Line="224" Column="19" TopLine="214"/>
</Position24>
<Position25>
<Filename Value="user_client_console.pas"/>
<Caret Line="272" Column="1" TopLine="247"/>
</Position25>
<Position26>
<Filename Value="user_client_console.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position26>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
@ -311,12 +457,18 @@
<Filename Value="user_client_console.exe"/>
</Target>
<SearchPaths>
<OtherUnitFiles Value="..\;..\..\;$(LazarusDir)\others_package\synapse\"/>
<OtherUnitFiles Value="..\;..\..\;$(LazarusDir)\others_package\synapse\;$(LazarusDir)\others_package\ics\latest_distr\Delphi\Vc32\"/>
<UnitOutputDirectory Value="obj"/>
</SearchPaths>
<CodeGeneration>
<Generate Value="Faster"/>
</CodeGeneration>
<Linking>
<Debugging>
<UseLineInfoUnit Value="False"/>
</Debugging>
<LinkSmart Value="True"/>
</Linking>
<Other>
<CompilerPath Value="$(CompPath)"/>
</Other>

View File

@ -3,9 +3,9 @@ program user_client_console;
{$mode objfpc}{$H+}
uses
Classes, SysUtils, TypInfo,
Classes, SysUtils, TypInfo, {$IFDEF WINDOWS}ActiveX,{$ENDIF}
user_service_intf_proxy,
synapse_tcp_protocol, synapse_http_protocol, library_protocol,
same_process_protocol, synapse_tcp_protocol, synapse_http_protocol, library_protocol, ics_tcp_protocol, ics_http_protocol,
soap_formatter, binary_formatter,
user_service_intf, xmlrpc_formatter;
@ -220,6 +220,10 @@ end;
var
strBuffer : string;
begin
{$IFDEF WINDOWS}
CoInitialize(nil);
try
{$ENDIF}
SYNAPSE_RegisterTCP_Transport();
SYNAPSE_RegisterHTTP_Transport();
LIB_Register_Transport();
@ -265,5 +269,10 @@ begin
Write('Choose a item : ');
end;
end;
{$IFDEF WINDOWS}
finally
CoUninitialize();
end;
{$ENDIF}
end.

View File

@ -0,0 +1,55 @@
{
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.
}
{$INCLUDE wst_global.inc}
unit server_listener;
interface
uses
Classes, SysUtils;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
type
TListnerNotifyMessage = procedure(Sender : TObject; const AMsg : string) of object;
TwstListener = class(TObject)
private
FOnNotifyMessage: TListnerNotifyMessage;
public
class function GetDescription() : string;virtual;
procedure Start();virtual;abstract;
procedure Stop();virtual;abstract;
procedure NotifyMessage(const AMsg : string);
property OnNotifyMessage : TListnerNotifyMessage read FOnNotifyMessage write FOnNotifyMessage;
end;
implementation
{ TwstListener }
class function TwstListener.GetDescription() : string;
begin
Result := ClassName;
end;
procedure TwstListener.NotifyMessage(const AMsg: string);
begin
if Assigned(FOnNotifyMessage) then
FOnNotifyMessage(Self,AMsg);
end;
end.

View File

@ -224,16 +224,22 @@ procedure TSOAPCallMaker.MakeCall(
);
Var
rqt, rsps : TMemoryStream;
propMngr : IPropertyManager;
{$IFDEF WST_DBG}
s : string;
{$ENDIF WST_DBG}
begin
Assert(Assigned(ASerializer));
Assert(Assigned(ATransport));
ATransport.GetPropertyManager().SetProperty(
propMngr := ATransport.GetPropertyManager();
propMngr.SetProperty(
sCONTENT_TYPE,
ASerializer.GetPropertyManager().GetProperty(sCONTENT_TYPE)
);
propMngr.SetProperty(
sFORMAT,
sPROTOCOL_NAME
);
rsps := Nil;
rqt := TMemoryStream.Create();
Try

View File

@ -38,6 +38,7 @@ Type
FConnection : THTTPSend;
FAddress : string;
private
FFormat : string;
FSoapAction: string;
function GetAddress: string;
function GetContentType: string;
@ -64,6 +65,7 @@ Type
property ProxyUsername : string read GetProxyUsername write SetProxyUsername;
property ProxyPassword : string read GetProxyPassword write SetProxyPassword;
property SoapAction : string read FSoapAction write FSoapAction;
property Format : string read FFormat write FFormat;
End;
{$M+}

View File

@ -37,6 +37,7 @@ Type
{ TTCPTransport }
TTCPTransport = class(TSimpleFactoryItem,ITransport)
Private
FFormat : string;
FPropMngr : IPropertyManager;
FConnection : TTCPBlockSocket;
FContentType : string;
@ -55,6 +56,7 @@ Type
property Address : string Read FAddress Write FAddress;
property Port : string Read FPort Write FPort;
property DefaultTimeOut : Integer read FDefaultTimeOut write FDefaultTimeOut;
property Format : string read FFormat write FFormat;
End;
{$M+}
@ -99,6 +101,7 @@ begin
wrtr.WriteInt32S(0);
wrtr.WriteStr(Target);
wrtr.WriteStr(ContentType);
wrtr.WriteStr(Self.Format);
SetLength(strBuff,ARequest.Size);
ARequest.Position := 0;
ARequest.Read(strBuff[1],Length(strBuff));

View File

@ -16,21 +16,17 @@ unit synapse_tcp_server;
interface
uses
Classes, SysUtils, blcksock, synsock;
Classes, SysUtils, blcksock, synsock, server_listener;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
const
sSERVER_PORT = '1234';
sSERVER_PORT = 1234;
type
ILogger = interface
['{CA357B9A-604F-4603-96FA-65D445837E80}']
procedure Log(const AMsg : string);overload;
procedure Log(const AMsg : string;const AArgs : array of const);overload;
end;
TwstSynapseTcpListener = class;
{ TClientHandlerThread }
@ -41,12 +37,13 @@ type
FSocketHandle : TSocket;
FInputStream : TMemoryStream;
FOutputStream : TMemoryStream;
FOwner : TwstSynapseTcpListener;
private
procedure ClearBuffers();
function ReadInputBuffer():Integer;
procedure SendOutputBuffer();
public
constructor Create (ASocketHandle : TSocket);
constructor Create (ASocketHandle : TSocket; AOwner : TwstSynapseTcpListener);
destructor Destroy();override;
procedure Execute(); override;
property DefaultTimeOut : Integer read FDefaultTimeOut write FDefaultTimeOut;
@ -58,51 +55,42 @@ type
private
FDefaultTimeOut: Integer;
FSocketObject : TTCPBlockSocket;
FSuspendingCount : Integer;
FOwner : TwstSynapseTcpListener;
public
constructor Create();
constructor Create(AOwner : TwstSynapseTcpListener);
destructor Destroy(); override;
procedure Execute(); override;
procedure SuspendAsSoonAsPossible();
procedure ResumeListening();
property DefaultTimeOut : Integer read FDefaultTimeOut write FDefaultTimeOut;
end;
{ TConsoleLogger }
{ TwstSynapseTcpListener }
TConsoleLogger = class(TInterfacedObject,IInterface,ILogger)
protected
procedure Log(const AMsg : string);overload;
procedure Log(const AMsg : string;const AArgs : array of const);overload;
TwstSynapseTcpListener = class(TwstListener)
private
FServerThread : TServerListnerThread;
FServerIpAddress : string;
FListningPort : Integer;
FDefaultClientPort : Integer;
FServerSoftware : string;
public
constructor Create(
const AServerIpAddress : string = '127.0.0.1';
const AListningPort : Integer = sSERVER_PORT;
const ADefaultClientPort : Integer = 25000;
const AServerSoftware : string = 'Web Service Toolkit Application'
);
destructor Destroy();override;
procedure Start();override;
procedure Stop();override;
end;
function Logger():ILogger ;
function SetLogger(ALogger : ILogger):ILogger ;
implementation
uses binary_streamer, server_service_intf, server_service_imputils
{$IFNDEF FPC},ActiveX{$ENDIF}, ComObj;
var FLoggerInst : ILogger = nil;
function SetLogger(ALogger : ILogger):ILogger ;
begin
Result := FLoggerInst;
FLoggerInst := ALogger;
end;
function Logger():ILogger ;
begin
Result := FLoggerInst;
end;
{ TConsoleLogger }
procedure TConsoleLogger.Log(const AMsg: string);
begin
WriteLn(AMsg);
end;
procedure TConsoleLogger.Log(const AMsg: string; const AArgs: array of const);
begin
WriteLn(Format(AMsg,AArgs));
end;
{ TClientHandlerThread }
@ -151,11 +139,15 @@ begin
FSocketObject.SendBuffer(FOutputStream.Memory,FOutputStream.Size);
end;
constructor TClientHandlerThread.Create(ASocketHandle: TSocket);
constructor TClientHandlerThread.Create(
ASocketHandle : TSocket;
AOwner : TwstSynapseTcpListener
);
begin
FSocketHandle := ASocketHandle;
FreeOnTerminate := True;
FDefaultTimeOut := 90000;
FOwner := AOwner;
inherited Create(False);
end;
@ -179,7 +171,7 @@ procedure TClientHandlerThread.Execute();
var
wrtr : IDataStore;
rdr : IDataStoreReader;
buff, trgt,ctntyp : string;
buff, trgt,ctntyp, frmt : string;
rqst : IRequestBuffer;
i : PtrUInt;
begin
@ -201,12 +193,13 @@ begin
rdr := CreateBinaryReader(FInputStream);
trgt := rdr.ReadStr();
ctntyp := rdr.ReadStr();
buff := rdr.ReadStr(); WriteLn;WriteLn('ContentType=',ctntyp,', ','Target = ',trgt);WriteLn;WriteLn(buff);
frmt := rdr.ReadStr();
buff := rdr.ReadStr();
rdr := nil;
FInputStream.Size := 0;
FInputStream.Write(buff[1],Length(buff));
FInputStream.Position := 0;
rqst := TRequestBuffer.Create(trgt,ctntyp,FInputStream,FOutputStream,GetFormatForContentType(ctntyp));
rqst := TRequestBuffer.Create(trgt,ctntyp,FInputStream,FOutputStream,frmt);
HandleServiceRequest(rqst);
i := FOutputStream.Size;
SetLength(buff,i);
@ -221,7 +214,7 @@ begin
end;
except
on e : Exception do begin
Logger().Log('Error : ThreadID = %d; Message = %s',[Self.ThreadID,e.Message]);
FOwner.NotifyMessage(Format('Error : ThreadID = %d; Message = %s',[Self.ThreadID,e.Message]));
end;
end;
finally
@ -236,11 +229,12 @@ end;
{ TServerListnerThread }
constructor TServerListnerThread.Create();
constructor TServerListnerThread.Create(AOwner : TwstSynapseTcpListener);
begin
FSocketObject := TTCPBlockSocket.Create();
FreeOnTerminate := True;
FDefaultTimeOut := 1000;
FOwner := AOwner;
inherited Create(false);
end;
@ -262,18 +256,21 @@ begin
FSocketObject.RaiseExcept := True;
FSocketObject.CreateSocket();
FSocketObject.SetLinger(True,10);
FSocketObject.Bind('127.0.0.1',sSERVER_PORT);
FSocketObject.Bind(FOwner.FServerIpAddress,IntToStr(FOwner.FListningPort));
FSocketObject.Listen();
while not Terminated do begin
if ( FSuspendingCount > 0 ) then begin
Suspend();
end;
if FSocketObject.CanRead(DefaultTimeOut) then begin
ClientSock := FSocketObject.Accept();
TClientHandlerThread.Create(ClientSock);
TClientHandlerThread.Create(ClientSock,FOwner);
end;
end;
except
on e : Exception do begin
Logger().Log('Listner Thread Error : ThreadID = %d; Message = %s',[Self.ThreadID,e.Message]);
Logger().Log('Listner stoped.');
FOwner.NotifyMessage(Format('Listner Thread Error : ThreadID = %d; Message = %s',[Self.ThreadID,e.Message]));
FOwner.NotifyMessage('Listner stoped.');
end;
end;
{$IFNDEF FPC}
@ -283,5 +280,57 @@ begin
{$ENDIF}
end;
procedure TServerListnerThread.SuspendAsSoonAsPossible();
begin
InterLockedIncrement(FSuspendingCount);
end;
procedure TServerListnerThread.ResumeListening();
begin
InterLockedDecrement(FSuspendingCount);
if ( FSuspendingCount <= 0 ) then begin
if Suspended then
Resume();
end;
end;
{ TwstSynapseTcpListener }
constructor TwstSynapseTcpListener.Create(
const AServerIpAddress : string;
const AListningPort : Integer;
const ADefaultClientPort : Integer;
const AServerSoftware : string
);
begin
FServerIpAddress := AServerIpAddress;
FListningPort := AListningPort;
FDefaultClientPort := ADefaultClientPort;
FServerSoftware := AServerSoftware;
end;
destructor TwstSynapseTcpListener.Destroy();
begin
if ( FServerThread <> nil ) then begin
FServerThread.Terminate();
Start();
end;
inherited Destroy();
end;
procedure TwstSynapseTcpListener.Start();
begin
if ( FServerThread = nil ) then
FServerThread := TServerListnerThread.Create(Self);
if FServerThread.Suspended then
FServerThread.ResumeListening();
end;
procedure TwstSynapseTcpListener.Stop();
begin
if ( FServerThread <> nil ) and ( not FServerThread.Suspended ) then
FServerThread.SuspendAsSoonAsPossible();
end;
end.

View File

@ -42,6 +42,7 @@ type
function CreateEnum(AContainer : TwstPasTreeContainer) : TPasEnumType;
function CreateCompoundObject(ASymbolTable : TwstPasTreeContainer) : TPasClassType;
function CreateArray(ASymbolTable : TwstPasTreeContainer) : TPasArrayType;
function CreateInterface(ASymbolTable : TwstPasTreeContainer) : TPasClassType;
function CreateMethod(
AOwner : TPasClassType;
@ -73,7 +74,7 @@ type
implementation
uses Contnrs, Forms, ufEnumedit, ufclassedit, uinterfaceedit, uprocedit,
uargedit, umoduleedit, ubindingedit;
uargedit, umoduleedit, ubindingedit, ufarrayedit;
type
@ -162,6 +163,17 @@ type
):Boolean;override;
end;
{ TArrayUpdater }
TArrayUpdater = class(TObjectUpdater)
public
class function CanHandle(AObject : TObject):Boolean;override;
class function UpdateObject(
AObject : TPasElement;
ASymbolTable : TwstPasTreeContainer
):Boolean;override;
end;
{ TInterfaceUpdater }
TInterfaceUpdater = class(TObjectUpdater)
@ -217,6 +229,30 @@ type
):Boolean;override;
end;
{ TArrayUpdater }
class function TArrayUpdater.CanHandle(AObject : TObject) : Boolean;
begin
Result := ( inherited CanHandle(AObject) ) and AObject.InheritsFrom(TPasArrayType);
end;
class function TArrayUpdater.UpdateObject(
AObject : TPasElement;
ASymbolTable : TwstPasTreeContainer
): Boolean;
var
f : TfArrayEdit;
e : TPasArrayType;
begin
e := AObject as TPasArrayType;
f := TfArrayEdit.Create(Application);
try
Result := f.UpdateObject(e,etUpdate,ASymbolTable);
finally
f.Release();
end;
end;
{ TBindingUpdater }
class function TBindingUpdater.CanHandle(AObject: TObject): Boolean;
@ -458,6 +494,19 @@ begin
end;
end;
function CreateArray(ASymbolTable : TwstPasTreeContainer) : TPasArrayType;
var
f : TfArrayEdit;
begin
Result := nil;
f := TfArrayEdit.Create(Application);
try
f.UpdateObject(Result,etCreate,ASymbolTable);
finally
f.Release();
end;
end;
function CreateMethod(
AOwner : TPasClassType;
ASymbolTable : TwstPasTreeContainer
@ -616,6 +665,7 @@ initialization
UpdaterRegistryInst.RegisterHandler(TArgumentUpdater);
UpdaterRegistryInst.RegisterHandler(TModuleUpdater);
UpdaterRegistryInst.RegisterHandler(TBindingUpdater);
UpdaterRegistryInst.RegisterHandler(TArrayUpdater);
finalization
FreeAndNil(UpdaterRegistryInst);

View File

@ -7,7 +7,7 @@
<MainUnit Value="0"/>
<IconPath Value="./"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="1"/>
<ActiveEditorIndexAtStart Value="0"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
@ -32,13 +32,15 @@
<PackageName Value="LCL"/>
</Item2>
</RequiredPackages>
<Units Count="71">
<Units Count="72">
<Unit0>
<Filename Value="typ_lib_edtr.lpr"/>
<IsPartOfProject Value="True"/>
<CursorPos X="24" Y="11"/>
<CursorPos X="20" Y="5"/>
<TopLine Value="1"/>
<UsageCount Value="189"/>
<EditorIndex Value="2"/>
<UsageCount Value="191"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="uwsttypelibraryedit.pas"/>
@ -47,10 +49,10 @@
<IsPartOfProject Value="True"/>
<ResourceFilename Value="uwsttypelibraryedit.lrs"/>
<UnitName Value="uwsttypelibraryedit"/>
<CursorPos X="38" Y="333"/>
<TopLine Value="288"/>
<CursorPos X="19" Y="552"/>
<TopLine Value="535"/>
<EditorIndex Value="0"/>
<UsageCount Value="189"/>
<UsageCount Value="191"/>
<Loaded Value="True"/>
</Unit1>
<Unit2>
@ -65,8 +67,8 @@
<UnitName Value="wsdl2pas_imp"/>
<CursorPos X="38" Y="805"/>
<TopLine Value="792"/>
<EditorIndex Value="6"/>
<UsageCount Value="79"/>
<EditorIndex Value="9"/>
<UsageCount Value="80"/>
<Bookmarks Count="1">
<Item0 X="65" Y="750" ID="2"/>
</Bookmarks>
@ -78,8 +80,8 @@
<UnitName Value="wsdl_generator"/>
<CursorPos X="45" Y="707"/>
<TopLine Value="684"/>
<EditorIndex Value="12"/>
<UsageCount Value="189"/>
<EditorIndex Value="13"/>
<UsageCount Value="191"/>
<Bookmarks Count="1">
<Item0 X="49" Y="446" ID="1"/>
</Bookmarks>
@ -94,7 +96,7 @@
<UnitName Value="uabout"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="189"/>
<UsageCount Value="191"/>
</Unit5>
<Unit6>
<Filename Value="ufenumedit.pas"/>
@ -103,20 +105,20 @@
<IsPartOfProject Value="True"/>
<ResourceFilename Value="ufenumedit.lrs"/>
<UnitName Value="ufEnumedit"/>
<CursorPos X="1" Y="77"/>
<CursorPos X="27" Y="78"/>
<TopLine Value="58"/>
<EditorIndex Value="7"/>
<UsageCount Value="189"/>
<EditorIndex Value="10"/>
<UsageCount Value="191"/>
<Loaded Value="True"/>
</Unit6>
<Unit7>
<Filename Value="view_helper.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="view_helper"/>
<CursorPos X="31" Y="535"/>
<TopLine Value="16"/>
<EditorIndex Value="5"/>
<UsageCount Value="189"/>
<CursorPos X="1" Y="241"/>
<TopLine Value="234"/>
<EditorIndex Value="8"/>
<UsageCount Value="191"/>
<Loaded Value="True"/>
</Unit7>
<Unit8>
@ -125,16 +127,16 @@
<UnitName Value="source_utils"/>
<CursorPos X="18" Y="20"/>
<TopLine Value="1"/>
<UsageCount Value="189"/>
<UsageCount Value="191"/>
</Unit8>
<Unit9>
<Filename Value="edit_helper.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="edit_helper"/>
<CursorPos X="44" Y="519"/>
<TopLine Value="5"/>
<CursorPos X="15" Y="491"/>
<TopLine Value="484"/>
<EditorIndex Value="1"/>
<UsageCount Value="189"/>
<UsageCount Value="191"/>
<Loaded Value="True"/>
</Unit9>
<Unit10>
@ -144,10 +146,10 @@
<IsPartOfProject Value="True"/>
<ResourceFilename Value="ufclassedit.lrs"/>
<UnitName Value="ufclassedit"/>
<CursorPos X="29" Y="158"/>
<TopLine Value="121"/>
<EditorIndex Value="2"/>
<UsageCount Value="189"/>
<CursorPos X="1" Y="307"/>
<TopLine Value="294"/>
<EditorIndex Value="3"/>
<UsageCount Value="191"/>
<Loaded Value="True"/>
</Unit10>
<Unit11>
@ -156,9 +158,11 @@
<IsPartOfProject Value="True"/>
<ResourceFilename Value="ufpropedit.lrs"/>
<UnitName Value="ufpropedit"/>
<CursorPos X="3" Y="154"/>
<TopLine Value="140"/>
<UsageCount Value="189"/>
<CursorPos X="33" Y="106"/>
<TopLine Value="92"/>
<EditorIndex Value="5"/>
<UsageCount Value="191"/>
<Loaded Value="True"/>
</Unit11>
<Unit12>
<Filename Value="..\..\..\..\lazarus23_213\lcl\comctrls.pp"/>
@ -170,10 +174,10 @@
<Unit13>
<Filename Value="..\ws_helper\parserutils.pas"/>
<UnitName Value="parserutils"/>
<CursorPos X="1" Y="93"/>
<TopLine Value="54"/>
<EditorIndex Value="3"/>
<UsageCount Value="66"/>
<CursorPos X="17" Y="20"/>
<TopLine Value="19"/>
<EditorIndex Value="4"/>
<UsageCount Value="67"/>
<Loaded Value="True"/>
</Unit13>
<Unit14>
@ -259,7 +263,7 @@
<UnitName Value="uinterfaceedit"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="153"/>
<UsageCount Value="155"/>
</Unit26>
<Unit27>
<Filename Value="uinterfaceedit.lfm"/>
@ -276,7 +280,7 @@
<UnitName Value="udm"/>
<CursorPos X="15" Y="2"/>
<TopLine Value="1"/>
<UsageCount Value="148"/>
<UsageCount Value="150"/>
</Unit28>
<Unit29>
<Filename Value="..\..\..\..\lazarus23_213\lcl\include\treeview.inc"/>
@ -288,10 +292,10 @@
<Filename Value="..\ws_helper\pascal_parser_intf.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="pascal_parser_intf"/>
<CursorPos X="37" Y="446"/>
<TopLine Value="436"/>
<EditorIndex Value="11"/>
<UsageCount Value="111"/>
<CursorPos X="24" Y="13"/>
<TopLine Value="1"/>
<EditorIndex Value="12"/>
<UsageCount Value="113"/>
<Loaded Value="True"/>
</Unit30>
<Unit31>
@ -300,7 +304,7 @@
<UnitName Value="PParser"/>
<CursorPos X="4" Y="2133"/>
<TopLine Value="2127"/>
<UsageCount Value="111"/>
<UsageCount Value="113"/>
</Unit31>
<Unit32>
<Filename Value="..\ws_helper\logger_intf.pas"/>
@ -315,7 +319,7 @@
<UnitName Value="PasTree"/>
<CursorPos X="33" Y="332"/>
<TopLine Value="315"/>
<UsageCount Value="111"/>
<UsageCount Value="113"/>
</Unit33>
<Unit34>
<Filename Value="..\..\..\..\lazarus_23_215\lcl\include\treeview.inc"/>
@ -340,17 +344,15 @@
<UnitName Value="rtti_filters"/>
<CursorPos X="1" Y="236"/>
<TopLine Value="219"/>
<EditorIndex Value="8"/>
<UsageCount Value="26"/>
<Loaded Value="True"/>
<UsageCount Value="27"/>
</Unit37>
<Unit38>
<Filename Value="..\ws_helper\generator.pas"/>
<UnitName Value="generator"/>
<CursorPos X="2" Y="16"/>
<TopLine Value="1"/>
<EditorIndex Value="4"/>
<UsageCount Value="29"/>
<EditorIndex Value="7"/>
<UsageCount Value="30"/>
<Loaded Value="True"/>
</Unit38>
<Unit39>
@ -358,9 +360,7 @@
<UnitName Value="dom_cursors"/>
<CursorPos X="1" Y="239"/>
<TopLine Value="222"/>
<EditorIndex Value="10"/>
<UsageCount Value="23"/>
<Loaded Value="True"/>
<UsageCount Value="24"/>
</Unit39>
<Unit40>
<Filename Value="..\ws_helper\command_line_parser.pas"/>
@ -442,7 +442,7 @@
<UnitName Value="uprocedit"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="67"/>
<UsageCount Value="69"/>
</Unit50>
<Unit51>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\comctrls.pp"/>
@ -457,7 +457,7 @@
<UnitName Value="common_gui_utils"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="65"/>
<UsageCount Value="67"/>
</Unit52>
<Unit53>
<Filename Value="..\..\..\..\..\DOCUME~1\ADMINI~1\LOCALS~1\Temp\DestBug.pas"/>
@ -474,7 +474,7 @@
<UnitName Value="uargedit"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="58"/>
<UsageCount Value="60"/>
</Unit54>
<Unit55>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\interfaces\win32\win32wscontrols.pp"/>
@ -498,7 +498,7 @@
<UnitName Value="umoduleedit"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="50"/>
<UsageCount Value="52"/>
</Unit57>
<Unit58>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\stdctrls.pp"/>
@ -515,7 +515,7 @@
<UnitName Value="ubindingedit"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="40"/>
<UsageCount Value="42"/>
</Unit59>
<Unit60>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\objpash.inc"/>
@ -556,7 +556,7 @@
<UnitName Value="ufrmsaveoption"/>
<CursorPos X="42" Y="64"/>
<TopLine Value="42"/>
<UsageCount Value="36"/>
<UsageCount Value="38"/>
</Unit65>
<Unit66>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\dialogs.pp"/>
@ -577,8 +577,8 @@
<UnitName Value="cursor_intf"/>
<CursorPos X="2" Y="90"/>
<TopLine Value="71"/>
<EditorIndex Value="9"/>
<UsageCount Value="12"/>
<EditorIndex Value="11"/>
<UsageCount Value="13"/>
<Loaded Value="True"/>
</Unit68>
<Unit69>
@ -593,11 +593,23 @@
<TopLine Value="1398"/>
<UsageCount Value="10"/>
</Unit70>
<Unit71>
<Filename Value="ufarrayedit.pas"/>
<ComponentName Value="fArrayEdit"/>
<IsPartOfProject Value="True"/>
<ResourceFilename Value="ufarrayedit.lrs"/>
<UnitName Value="ufarrayedit"/>
<CursorPos X="67" Y="117"/>
<TopLine Value="95"/>
<EditorIndex Value="6"/>
<UsageCount Value="22"/>
<Loaded Value="True"/>
</Unit71>
</Units>
<JumpHistory Count="1" HistoryIndex="0">
<Position1>
<Filename Value="uwsttypelibraryedit.pas"/>
<Caret Line="595" Column="20" TopLine="575"/>
<Filename Value="typ_lib_edtr.lpr"/>
<Caret Line="17" Column="43" TopLine="1"/>
</Position1>
</JumpHistory>
</ProjectOptions>

View File

@ -11,7 +11,7 @@ uses
, uwsttypelibraryedit, view_helper, source_utils, uabout, ufEnumedit,
edit_helper, ufclassedit, wsdl_generator, ufpropedit, uinterfaceedit, udm,
pascal_parser_intf, PasTree, PParser, uprocedit, common_gui_utils, uargedit,
umoduleedit, ubindingedit, ufrmsaveoption;
umoduleedit, ubindingedit, ufrmsaveoption, ufarrayedit;
begin
Application.Initialize;

View File

@ -1,7 +1,7 @@
object fPropEdit: TfPropEdit
Left = 306
Left = 862
Height = 326
Top = 266
Top = 68
Width = 324
HorzScrollBar.Page = 323
VertScrollBar.Page = 325
@ -101,7 +101,7 @@ object fPropEdit: TfPropEdit
Left = 20
Height = 13
Top = 218
Width = 100
Width = 105
Caption = 'Optional property'
Font.Style = [fsItalic]
TabOrder = 3

View File

@ -1,35 +1,35 @@
{ Ceci est un fichier ressource g�n�r� automatiquement par Lazarus }
LazarusResources.Add('TfPropEdit','FORMDATA',[
'TPF0'#10'TfPropEdit'#9'fPropEdit'#4'Left'#3'2'#1#6'Height'#3'F'#1#3'Top'#3#10
+#1#5'Width'#3'D'#1#18'HorzScrollBar.Page'#3'C'#1#18'VertScrollBar.Page'#3'E'
+#1#13'ActiveControl'#7#7'Button1'#11'BorderIcons'#11#12'biSystemMenu'#0#11'B'
+'orderStyle'#7#8'bsDialog'#7'Caption'#6#9'fPropEdit'#12'ClientHeight'#3'F'#1
+#11'ClientWidth'#3'D'#1#8'Position'#7#15'poDesktopCenter'#0#6'TPanel'#6'Pane'
+'l1'#6'Height'#2'2'#3'Top'#3#20#1#5'Width'#3'D'#1#5'Align'#7#8'alBottom'#12
+'ClientHeight'#2'2'#11'ClientWidth'#3'D'#1#8'TabOrder'#2#0#0#7'TButton'#7'Bu'
+'tton1'#4'Left'#3#236#0#6'Height'#2#25#3'Top'#2#10#5'Width'#2'K'#7'Anchors'
+#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#6'Cancel'#9#7'Ca'
+'ption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#0#0#0#7'TButton'#7'But'
+'ton2'#4'Left'#3#146#0#6'Height'#2#25#3'Top'#2#10#5'Width'#2'K'#6'Action'#7#5
+'actOK'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4
+#7'Default'#9#8'TabOrder'#2#1#0#0#0#12'TPageControl'#12'PageControl1'#6'Heig'
+'ht'#3#20#1#5'Width'#3'D'#1#10'ActivePage'#7#9'TabSheet1'#5'Align'#7#8'alCli'
+'ent'#8'TabIndex'#2#0#8'TabOrder'#2#1#0#9'TTabSheet'#9'TabSheet1'#7'Caption'
+#6#8'Property'#12'ClientHeight'#3#250#0#11'ClientWidth'#3'<'#1#0#6'TLabel'#6
+'Label1'#4'Left'#2#20#6'Height'#2#14#3'Top'#2#24#5'Width'#2#28#7'Caption'#6#4
+'Name'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#20#6'Height'#2#14
+#3'Top'#2'b'#5'Width'#2#25#7'Caption'#6#4'Type'#11'ParentColor'#8#0#0#5'TEdi'
+'t'#7'edtName'#4'Left'#2#20#6'Height'#2#23#3'Top'#2'*'#5'Width'#3#16#1#8'Tab'
+'Order'#2#0#0#0#9'TComboBox'#7'edtType'#4'Left'#2#20#6'Height'#2#21#3'Top'#2
+'t'#5'Width'#3#16#1#16'AutoCompleteText'#11#22'cbactEndOfLineComplete'#20'cb'
+'actSearchAscending'#0#10'ItemHeight'#2#13#9'MaxLength'#2#0#5'Style'#7#14'cs'
+'DropDownList'#8'TabOrder'#2#1#0#0#9'TCheckBox'#12'edtAttribute'#4'Left'#2#20
+#6'Height'#2#13#3'Top'#3#170#0#5'Width'#2'e'#7'Caption'#6#18'Attribute Prope'
+'rty'#8'TabOrder'#2#2#0#0#9'TCheckBox'#11'edtOptional'#4'Left'#2#20#6'Height'
+#2#13#3'Top'#3#218#0#5'Width'#2'd'#7'Caption'#6#17'Optional property'#10'Fon'
+'t.Style'#11#8'fsItalic'#0#8'TabOrder'#2#3#0#0#0#0#11'TActionList'#11'Action'
+'List1'#4'left'#2'h'#3'top'#2'h'#0#7'TAction'#5'actOK'#7'Caption'#6#2'OK'#18
+'DisableIfNoHandler'#9#9'OnExecute'#7#12'actOKExecute'#8'OnUpdate'#7#11'actO'
+'KUpdate'#0#0#0#0
'TPF0'#10'TfPropEdit'#9'fPropEdit'#4'Left'#3'^'#3#6'Height'#3'F'#1#3'Top'#2'D'
+#5'Width'#3'D'#1#18'HorzScrollBar.Page'#3'C'#1#18'VertScrollBar.Page'#3'E'#1
+#13'ActiveControl'#7#7'Button1'#11'BorderIcons'#11#12'biSystemMenu'#0#11'Bor'
+'derStyle'#7#8'bsDialog'#7'Caption'#6#9'fPropEdit'#12'ClientHeight'#3'F'#1#11
+'ClientWidth'#3'D'#1#8'Position'#7#15'poDesktopCenter'#0#6'TPanel'#6'Panel1'
+#6'Height'#2'2'#3'Top'#3#20#1#5'Width'#3'D'#1#5'Align'#7#8'alBottom'#12'Clie'
+'ntHeight'#2'2'#11'ClientWidth'#3'D'#1#8'TabOrder'#2#0#0#7'TButton'#7'Button'
+'1'#4'Left'#3#236#0#6'Height'#2#25#3'Top'#2#10#5'Width'#2'K'#7'Anchors'#11#5
+'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#6'Cancel'#9#7'Caption'
+#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#0#0#0#7'TButton'#7'Button2'#4
+'Left'#3#146#0#6'Height'#2#25#3'Top'#2#10#5'Width'#2'K'#6'Action'#7#5'actOK'
+#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#7'Def'
+'ault'#9#8'TabOrder'#2#1#0#0#0#12'TPageControl'#12'PageControl1'#6'Height'#3
+#20#1#5'Width'#3'D'#1#10'ActivePage'#7#9'TabSheet1'#5'Align'#7#8'alClient'#8
+'TabIndex'#2#0#8'TabOrder'#2#1#0#9'TTabSheet'#9'TabSheet1'#7'Caption'#6#8'Pr'
+'operty'#12'ClientHeight'#3#250#0#11'ClientWidth'#3'<'#1#0#6'TLabel'#6'Label'
+'1'#4'Left'#2#20#6'Height'#2#14#3'Top'#2#24#5'Width'#2#28#7'Caption'#6#4'Nam'
+'e'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#20#6'Height'#2#14#3
+'Top'#2'b'#5'Width'#2#25#7'Caption'#6#4'Type'#11'ParentColor'#8#0#0#5'TEdit'
+#7'edtName'#4'Left'#2#20#6'Height'#2#23#3'Top'#2'*'#5'Width'#3#16#1#8'TabOrd'
+'er'#2#0#0#0#9'TComboBox'#7'edtType'#4'Left'#2#20#6'Height'#2#21#3'Top'#2't'
+#5'Width'#3#16#1#16'AutoCompleteText'#11#22'cbactEndOfLineComplete'#20'cbact'
+'SearchAscending'#0#10'ItemHeight'#2#13#9'MaxLength'#2#0#5'Style'#7#14'csDro'
+'pDownList'#8'TabOrder'#2#1#0#0#9'TCheckBox'#12'edtAttribute'#4'Left'#2#20#6
+'Height'#2#13#3'Top'#3#170#0#5'Width'#2'e'#7'Caption'#6#18'Attribute Propert'
+'y'#8'TabOrder'#2#2#0#0#9'TCheckBox'#11'edtOptional'#4'Left'#2#20#6'Height'#2
+#13#3'Top'#3#218#0#5'Width'#2'i'#7'Caption'#6#17'Optional property'#10'Font.'
+'Style'#11#8'fsItalic'#0#8'TabOrder'#2#3#0#0#0#0#11'TActionList'#11'ActionLi'
+'st1'#4'left'#2'h'#3'top'#2'h'#0#7'TAction'#5'actOK'#7'Caption'#6#2'OK'#18'D'
+'isableIfNoHandler'#9#9'OnExecute'#7#12'actOKExecute'#8'OnUpdate'#7#11'actOK'
+'Update'#0#0#0#0
]);

View File

@ -1888,6 +1888,10 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
Action = actIntfCreate
OnClick = actIntfCreateExecute
end
object MenuItem35: TMenuItem
Action = actArrayCreate
OnClick = actArrayCreateExecute
end
object MenuItem12: TMenuItem
Caption = '-'
end
@ -1989,6 +1993,11 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
OnExecute = actDeleteExecute
OnUpdate = actUpdateObjectUpdate
end
object actArrayCreate: TAction
Caption = 'Create Array'
DisableIfNoHandler = True
OnExecute = actArrayCreateExecute
end
end
object OD: TOpenDialog
Title = 'Ouvrir un fichier existant'

View File

@ -292,41 +292,44 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+'ion'#7#13'actEnumCreate'#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuI'
+'tem'#10'MenuItem23'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7#24'actCo'
+'mpoundCreateExecute'#0#0#9'TMenuItem'#10'MenuItem25'#6'Action'#7#13'actIntf'
+'Create'#7'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMenuItem'#10'MenuItem1'
+'2'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem13'#6'Action'#7#15'actUpda'
+'teObject'#7'Caption'#6#13'Update Object'#7'OnClick'#7#22'actUpdateObjectExe'
+'cute'#0#0#9'TMenuItem'#10'MenuItem34'#6'Action'#7#9'actDelete'#7'OnClick'#7
+#16'actDeleteExecute'#0#0#0#9'TMenuItem'#9'MenuItem6'#6'Action'#7#8'actAbout'
+#7'Caption'#6#6'&About'#7'OnClick'#7#15'actAboutExecute'#0#0#0#11'TActionLis'
+'t'#2'AL'#4'left'#3'X'#1#3'top'#2'8'#0#7'TAction'#11'actOpenFile'#7'Caption'
+#6#9'Open File'#18'DisableIfNoHandler'#9#9'OnExecute'#7#18'actOpenFileExecut'
+'e'#0#0#7'TAction'#7'actExit'#7'Caption'#6#4'Exit'#18'DisableIfNoHandler'#9#9
+'OnExecute'#7#14'actExitExecute'#0#0#7'TAction'#9'actExport'#7'Caption'#6#24
+'Save generated files ...'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actExp'
+'ortExecute'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction'#8'actAbout'#7
+'Caption'#6#5'About'#18'DisableIfNoHandler'#9#9'OnExecute'#7#15'actAboutExec'
+'ute'#0#0#7'TAction'#9'actSaveAs'#7'Caption'#6#11'Save As ...'#18'DisableIfN'
+'oHandler'#9#9'OnExecute'#7#16'actSaveAsExecute'#8'OnUpdate'#7#15'actExportU'
+'pdate'#0#0#7'TAction'#13'actEnumCreate'#7'Caption'#6#18'Create Enumeration'
+#18'DisableIfNoHandler'#9#9'OnExecute'#7#20'actEnumCreateExecute'#0#0#7'TAct'
+'ion'#15'actUpdateObject'#7'Caption'#6#6'Update'#18'DisableIfNoHandler'#9#9
+'OnExecute'#7#22'actUpdateObjectExecute'#8'OnUpdate'#7#21'actUpdateObjectUpd'
+'ate'#0#0#7'TAction'#14'actRefreshView'#7'Caption'#6#14'&Refresh Views'#18'D'
+'isableIfNoHandler'#9#9'OnExecute'#7#21'actRefreshViewExecute'#0#0#7'TAction'
+#10'actNewFile'#7'Caption'#6#8'New File'#18'DisableIfNoHandler'#9#9'OnExecut'
+'e'#7#17'actNewFileExecute'#0#0#7'TAction'#17'actCompoundCreate'#7'Caption'#6
+#20'Create Compound Type'#18'DisableIfNoHandler'#9#9'OnExecute'#7#24'actComp'
+'oundCreateExecute'#0#0#7'TAction'#13'actIntfCreate'#7'Caption'#6#16'Create '
+'Interface'#18'DisableIfNoHandler'#9#9'OnExecute'#7#20'actIntfCreateExecute'
+#0#0#7'TAction'#13'actFullExpand'#7'Caption'#6#11'Full expand'#18'DisableIfN'
+'oHandler'#9#9'OnExecute'#7#20'actFullExpandExecute'#0#0#7'TAction'#15'actFu'
+'llCollapse'#7'Caption'#6#13'Full Collapse'#18'DisableIfNoHandler'#9#9'OnExe'
,'cute'#7#22'actFullCollapseExecute'#0#0#7'TAction'#7'actSave'#7'Caption'#6#4
+'Save'#18'DisableIfNoHandler'#9#9'OnExecute'#7#14'actSaveExecute'#0#0#7'TAct'
+'ion'#9'actDelete'#7'Caption'#6#6'Delete'#18'DisableIfNoHandler'#9#9'OnExecu'
+'te'#7#16'actDeleteExecute'#8'OnUpdate'#7#21'actUpdateObjectUpdate'#0#0#0#11
+'TOpenDialog'#2'OD'#5'Title'#6#26'Ouvrir un fichier existant'#6'Filter'#6'3W'
+'DSL files(*.WSDL)|*.WSDL|Pascal file (*.pas)|*.pas'#11'FilterIndex'#2#0#10
+'Create'#7'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMenuItem'#10'MenuItem3'
+'5'#6'Action'#7#14'actArrayCreate'#7'OnClick'#7#21'actArrayCreateExecute'#0#0
+#9'TMenuItem'#10'MenuItem12'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem1'
+'3'#6'Action'#7#15'actUpdateObject'#7'Caption'#6#13'Update Object'#7'OnClick'
+#7#22'actUpdateObjectExecute'#0#0#9'TMenuItem'#10'MenuItem34'#6'Action'#7#9
+'actDelete'#7'OnClick'#7#16'actDeleteExecute'#0#0#0#9'TMenuItem'#9'MenuItem6'
+#6'Action'#7#8'actAbout'#7'Caption'#6#6'&About'#7'OnClick'#7#15'actAboutExec'
+'ute'#0#0#0#11'TActionList'#2'AL'#4'left'#3'X'#1#3'top'#2'8'#0#7'TAction'#11
+'actOpenFile'#7'Caption'#6#9'Open File'#18'DisableIfNoHandler'#9#9'OnExecute'
+#7#18'actOpenFileExecute'#0#0#7'TAction'#7'actExit'#7'Caption'#6#4'Exit'#18
+'DisableIfNoHandler'#9#9'OnExecute'#7#14'actExitExecute'#0#0#7'TAction'#9'ac'
+'tExport'#7'Caption'#6#24'Save generated files ...'#18'DisableIfNoHandler'#9
+#9'OnExecute'#7#16'actExportExecute'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7
+'TAction'#8'actAbout'#7'Caption'#6#5'About'#18'DisableIfNoHandler'#9#9'OnExe'
+'cute'#7#15'actAboutExecute'#0#0#7'TAction'#9'actSaveAs'#7'Caption'#6#11'Sav'
+'e As ...'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actSaveAsExecute'#8'On'
+'Update'#7#15'actExportUpdate'#0#0#7'TAction'#13'actEnumCreate'#7'Caption'#6
+#18'Create Enumeration'#18'DisableIfNoHandler'#9#9'OnExecute'#7#20'actEnumCr'
+'eateExecute'#0#0#7'TAction'#15'actUpdateObject'#7'Caption'#6#6'Update'#18'D'
+'isableIfNoHandler'#9#9'OnExecute'#7#22'actUpdateObjectExecute'#8'OnUpdate'#7
+#21'actUpdateObjectUpdate'#0#0#7'TAction'#14'actRefreshView'#7'Caption'#6#14
+'&Refresh Views'#18'DisableIfNoHandler'#9#9'OnExecute'#7#21'actRefreshViewEx'
+'ecute'#0#0#7'TAction'#10'actNewFile'#7'Caption'#6#8'New File'#18'DisableIfN'
+'oHandler'#9#9'OnExecute'#7#17'actNewFileExecute'#0#0#7'TAction'#17'actCompo'
+'undCreate'#7'Caption'#6#20'Create Compound Type'#18'DisableIfNoHandler'#9#9
+'OnExecute'#7#24'actCompoundCreateExecute'#0#0#7'TAction'#13'actIntfCreate'#7
+'Caption'#6#16'Create Interface'#18'DisableIfNoHandler'#9#9'OnExecute'#7#20
+'actIntfCreateExecute'#0#0#7'TAction'#13'actFullExpand'#7'Caption'#6#11'Full'
+' expand'#18'DisableIfNoHandler'#9#9'OnExecute'#7#20'actFullExpandExecute'#0
,#0#7'TAction'#15'actFullCollapse'#7'Caption'#6#13'Full Collapse'#18'DisableI'
+'fNoHandler'#9#9'OnExecute'#7#22'actFullCollapseExecute'#0#0#7'TAction'#7'ac'
+'tSave'#7'Caption'#6#4'Save'#18'DisableIfNoHandler'#9#9'OnExecute'#7#14'actS'
+'aveExecute'#0#0#7'TAction'#9'actDelete'#7'Caption'#6#6'Delete'#18'DisableIf'
+'NoHandler'#9#9'OnExecute'#7#16'actDeleteExecute'#8'OnUpdate'#7#21'actUpdate'
+'ObjectUpdate'#0#0#7'TAction'#14'actArrayCreate'#7'Caption'#6#12'Create Arra'
+'y'#18'DisableIfNoHandler'#9#9'OnExecute'#7#21'actArrayCreateExecute'#0#0#0
+#11'TOpenDialog'#2'OD'#5'Title'#6#26'Ouvrir un fichier existant'#6'Filter'#6
+'3WDSL files(*.WSDL)|*.WSDL|Pascal file (*.pas)|*.pas'#11'FilterIndex'#2#0#10
+'InitialDir'#6#2'.\'#7'Options'#11#15'ofPathMustExist'#15'ofFileMustExist'#14
+'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#153#1#3'top'#2'X'#0#0#10'TSynP'
+'asSyn'#10'SynPasSyn1'#7'Enabled'#8#23'CommentAttri.Foreground'#7#6'clBlue'

View File

@ -38,6 +38,7 @@ type
actFullExpand: TAction;
actFullCollapse: TAction;
actDelete : TAction;
actArrayCreate : TAction;
actSave : TAction;
actNewFile: TAction;
actRefreshView: TAction;
@ -71,6 +72,7 @@ type
MenuItem32: TMenuItem;
MenuItem33 : TMenuItem;
MenuItem34 : TMenuItem;
MenuItem35 : TMenuItem;
MenuItem5: TMenuItem;
MenuItem6: TMenuItem;
MenuItem7 : TMenuItem;
@ -105,6 +107,7 @@ type
tsProxy: TTabSheet;
trvSchema: TTreeView;
procedure actAboutExecute(Sender: TObject);
procedure actArrayCreateExecute(Sender : TObject);
procedure actCompoundCreateExecute(Sender: TObject);
procedure actDeleteExecute (Sender : TObject );
procedure actEnumCreateExecute(Sender: TObject);
@ -532,6 +535,16 @@ begin
end;
end;
procedure TfWstTypeLibraryEdit.actArrayCreateExecute(Sender : TObject);
var
e : TPasArrayType;
begin
e := CreateArray(FSymbolTable);
if Assigned(e) then begin
FindPainter(e).Paint(FSymbolTable,e,GetTypeNode());
end;
end;
procedure TfWstTypeLibraryEdit.actCompoundCreateExecute(Sender: TObject);
var
e : TPasClassType;

View File

@ -235,6 +235,13 @@ type
class function CanHandle(AObj : TObject):Boolean;override;
end;
{ TArrayTypeDefinitionPainter }
TArrayTypeDefinitionPainter = class(TTypeSymbolPainter)
public
class function CanHandle(AObj : TObject):Boolean;override;
end;
{ TMethodDefinitionPainter }
TMethodDefinitionPainter = class(TTypeSymbolPainter)
@ -287,6 +294,13 @@ type
class function CanHandle(AObj : TObject):Boolean;override;
end;
{ TArrayTypeDefinitionPainter }
class function TArrayTypeDefinitionPainter.CanHandle(AObj : TObject) : Boolean;
begin
Result := ( inherited CanHandle(AObj) ) and AObj.InheritsFrom(TPasArrayType);
end;
{ TBindingPainter }
function TBindingPainter.Paint(
@ -541,7 +555,6 @@ begin
Result := ( inherited CanHandle(AObj) ) and
( AObj.InheritsFrom(TPasClassType) and ( TPasClassType(AObj).ObjKind = okClass ) ) and
( not AObj.InheritsFrom(TPasNativeClassType) );
end;
{ TEnumTypeDefinitionPainter }
@ -708,7 +721,8 @@ initialization
FPainterRegistryInst.RegisterHandler(TInterfaceDefinitionPainter);
FPainterRegistryInst.RegisterHandler(TMethodDefinitionPainter);
FPainterRegistryInst.RegisterHandler(TPasNativeSimpleTypePainter);
FPainterRegistryInst.RegisterHandler(TBindingPainter)
FPainterRegistryInst.RegisterHandler(TBindingPainter);
FPainterRegistryInst.RegisterHandler(TArrayTypeDefinitionPainter);
finalization
FreeAndNil(FPainterRegistryInst);

View File

@ -109,6 +109,8 @@ type
function GetArrayItemName(AArray : TPasArrayType) : string;
function GetArrayItemExternalName(AArray : TPasArrayType) : string;
function GetArrayStyle(AArray : TPasArrayType) : TArrayStyle;
procedure SetArrayStyle(AArray : TPasArrayType; const AStyle : TArrayStyle);
procedure SetArrayItemExternalName(AArray : TPasArrayType; const AExternalName : string);
function FindElement(const AName: String): TPasElement; override;
function FindElementInModule(const AName: String; AModule: TPasModule): TPasElement;
function FindModule(const AName: String): TPasModule;override;
@ -493,6 +495,25 @@ begin
Result := asScoped;
end;
procedure TwstPasTreeContainer.SetArrayStyle(
AArray : TPasArrayType;
const AStyle : TArrayStyle
);
begin
if ( AStyle = asEmbeded ) then
Properties.SetValue(AArray,sARRAY_STYLE,sARRAY_STYLE_EMBEDDED)
else
Properties.SetValue(AArray,sARRAY_STYLE,sARRAY_STYLE_SCOPED);
end;
procedure TwstPasTreeContainer.SetArrayItemExternalName(
AArray : TPasArrayType;
const AExternalName : string
);
begin
Properties.SetValue(AArray,sARRAY_ITEM_EXT_NAME,AExternalName);
end;
function TwstPasTreeContainer.FindElementInModule(const AName: String; AModule : TPasModule): TPasElement;
var
decs : TList;

View File

@ -205,13 +205,19 @@ procedure TXmlRpcCallMaker.MakeCall(
);
var
rqt, rsps : TMemoryStream;
propMngr : IPropertyManager;
begin
Assert(Assigned(ASerializer));
Assert(Assigned(ATransport));
ATransport.GetPropertyManager().SetProperty(
propMngr := ATransport.GetPropertyManager();
propMngr.SetProperty(
sCONTENT_TYPE,
ASerializer.GetPropertyManager().GetProperty(sCONTENT_TYPE)
);
propMngr.SetProperty(
sFORMAT,
sPROTOCOL_NAME
);
rsps := nil;
rqt := TMemoryStream.Create();
try