Delphi pooling is ok

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@215 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
inoussa
2007-07-18 11:23:56 +00:00
parent 7032cef6b7
commit 726114b2ae
27 changed files with 1338 additions and 604 deletions

View File

@ -91,7 +91,7 @@ type
IItemFactoryEx = interface(IItemFactory)
['{66B77926-7E45-4780-8FFB-FB78625EDC1D}']
procedure ReleaseInstance(var AInstance);
procedure ReleaseInstance(const AInstance : IInterface);
function GetPropertyManager(
const APropertyGroup : string;
const ACreateIfNotExists : Boolean
@ -1051,7 +1051,7 @@ type
);
destructor Destroy();override;
function Get(const ATimeOut : Cardinal) : IInterface;
procedure Release(var AItem : IInterface);
procedure Release(const AItem : IInterface);
property Min : PtrInt read FMin;
property Max : PtrInt read FMax;
end;
@ -1074,7 +1074,7 @@ type
procedure SetPoolMin(const AValue: PtrInt);
protected
function CreateInstance():IInterface;override;
procedure ReleaseInstance(var AInstance);virtual;
procedure ReleaseInstance(const AInstance : IInterface);virtual;
function GetPropertyManager(
const APropertyGroup : string;
const ACreateIfNotExists : Boolean
@ -1768,8 +1768,8 @@ begin
if ( pt^.Kind = tkEnumeration ) and
( GetTypeData(pt)^.BaseType^ = TypeInfo(Boolean) )
then begin
boolData := Boolean(GetOrdProp(AObject,p^.Name));
AStore.Put(propName,pt,boolData);
AStore.Get(pt,propName,boolData);
SetPropValue(AObject,p^.Name,boolData);
end else begin
{$ENDIF}
FillChar(enumData,SizeOf(enumData),#0);
@ -1805,10 +1805,10 @@ begin
int64Data := enumData.ULongIntData;
End;
End;
SetOrdProp(AObject,p^.Name,int64Data);
{$IFNDEF FPC}
end;
{$ENDIF}
SetOrdProp(AObject,p^.Name,int64Data);
End;
tkFloat :
Begin
@ -2146,16 +2146,10 @@ begin
end;
end;
procedure TSimpleItemFactoryEx.ReleaseInstance(var AInstance);
var
tmpIntf : IInterface;
procedure TSimpleItemFactoryEx.ReleaseInstance(const AInstance : IInterface);
begin
tmpIntf := IInterface(AInstance);
Pointer(AInstance) := nil;
if Pooled then begin
FPool.Release(tmpIntf);
end else begin
tmpIntf := nil;
FPool.Release(AInstance);
end;
end;
@ -4396,14 +4390,14 @@ begin
end;
end;
procedure TIntfPool.Release(var AItem: IInterface);
procedure TIntfPool.Release(const AItem: IInterface);
var
i : PtrInt;
begin
for i := 0 to Pred(FList.Count) do begin
if ( TIntfPoolItem(FList[i]).Intf = AItem ) then begin
TIntfPoolItem(FList[i]).Used := False;
AItem := nil;
FLock.Release();
Break;
end;
end;
@ -4440,7 +4434,6 @@ begin
buffer := AStore.ReadBuffer(AName);
if ( AObject = nil ) then
AObject := Create();
writeLn;writeLn(AObject.ClassName);
locObj := AObject as TStringBufferRemotable;;
locObj.Data := buffer;
end;

View File

@ -158,13 +158,11 @@ type
Const ATypeInfo : PTypeInfo;
Const AData : TEnumIntType
):TDOMNode;
{$IFDEF FPC}
function PutBool(
Const AName : String;
Const ATypeInfo : PTypeInfo;
Const AData : Boolean
):TDOMNode;
{$ENDIF}
function PutInt64(
Const AName : String;
Const ATypeInfo : PTypeInfo;
@ -192,12 +190,12 @@ type
Var AName : String;
Var AData : TEnumIntType
);
{$IFDEF FPC}
procedure GetBool(
Const ATypeInfo : PTypeInfo;
Var AName : String;
Var AData : Boolean
);
{$IFDEF FPC}
procedure GetInt(
Const ATypeInfo : PTypeInfo;
Var AName : String;
@ -700,7 +698,6 @@ begin
);
end;
{$IFDEF FPC}
function TSOAPBaseFormatter.PutBool(
const AName : String;
const ATypeInfo : PTypeInfo;
@ -709,7 +706,6 @@ function TSOAPBaseFormatter.PutBool(
begin
Result := InternalPutData(AName,ATypeInfo,LowerCase(BoolToStr(AData)));
end;
{$ENDIF}
function TSOAPBaseFormatter.PutInt64(
const AName : String;
@ -808,7 +804,6 @@ begin
AData := GetEnumValue(ATypeInfo,locBuffer)
End;
{$IFDEF FPC}
procedure TSOAPBaseFormatter.GetBool(
const ATypeInfo : PTypeInfo;
var AName : String;
@ -824,6 +819,7 @@ begin
AData := StrToBool(locBuffer);
end;
{$IFDEF FPC}
procedure TSOAPBaseFormatter.GetInt(
const ATypeInfo: PTypeInfo;
var AName: String;
@ -1337,7 +1333,7 @@ Var
int64Data : Int64;
strData : string;
objData : TObject;
{$IFDEF FPC}boolData : Boolean;{$ENDIF}
boolData : Boolean;
enumData : TEnumIntType;
floatDt : Extended;
begin
@ -1365,7 +1361,15 @@ begin
End;
{$ENDIF}
tkInteger, tkEnumeration :
Begin
begin
{$IFNDEF FPC}
if ( ATypeInfo^.Kind = tkEnumeration ) and
( GetTypeData(ATypeInfo)^.BaseType^ = TypeInfo(Boolean) )
then begin
boolData := Boolean(AData);
PutBool(AName,ATypeInfo,boolData);
end else begin
{$ENDIF}
enumData := 0;
Case GetTypeData(ATypeInfo)^.OrdType Of
otSByte : enumData := ShortInt(AData);
@ -1379,7 +1383,10 @@ begin
PutInt64(AName,ATypeInfo,enumData)
Else
PutEnum(AName,ATypeInfo,enumData);
End;
{$IFNDEF FPC}
end;
{$ENDIF}
end;
tkFloat :
Begin
floatDt := 0;
@ -1516,7 +1523,7 @@ Var
int64Data : Int64;
strData : string;
objData : TObject;
{$IFDEF FPC}boolData : Boolean;{$ENDIF}
boolData : Boolean;
enumData : TEnumIntType;
floatDt : Extended;
begin
@ -1548,7 +1555,16 @@ begin
End;
{$ENDIF}
tkInteger, tkEnumeration :
Begin
begin
{$IFNDEF FPC}
if ( ATypeInfo^.Kind = tkEnumeration ) and
( GetTypeData(ATypeInfo)^.BaseType^ = TypeInfo(Boolean) )
then begin
boolData := False;
GetBool(ATypeInfo,AName,boolData);
Boolean(AData) := boolData;
end else begin
{$ENDIF}
enumData := 0;
If ( ATypeInfo^.Kind = tkInteger ) Then
GetInt64(ATypeInfo,AName,enumData)
@ -1562,7 +1578,10 @@ begin
otSLong,
otULong : LongInt(AData) := enumData;
End;
End;
{$IFNDEF FPC}
end;
{$ENDIF}
end;
tkFloat :
Begin
floatDt := 0;

View File

@ -0,0 +1,272 @@
{
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 config_objects;
interface
uses SysUtils, Classes, base_service_intf;
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
type
TwstConfigItem = class(TBaseComplexRemotable);
TwstConfigService = class(TwstConfigItem)
private
FPooled: Boolean;
FPoolMax: PtrInt;
FPoolMin: PtrInt;
FTimeOut: PtrUInt;
FName: string;
public
function GetConfigText() : string;
published
property Name : string read FName write FName;
property PoolMax : PtrInt read FPoolMax write FPoolMax;
property PoolMin : PtrInt read FPoolMin write FPoolMin;
property Pooled : Boolean read FPooled write FPooled;
property TimeOut : PtrUInt read FTimeOut write FTimeOut;
end;
TwstConfigServiceArray = class(TBaseObjectArrayRemotable)
private
function GetItem(AIndex: Integer): TwstConfigService;
public
class function GetItemClass():TBaseRemotableClass;override;
property Item[AIndex:Integer] : TwstConfigService Read GetItem;Default;
end;
TWstConfigurationObject = class(TBaseComplexRemotable)
private
FServices: TwstConfigServiceArray;
public
constructor Create();override;
destructor Destroy();override;
published
property Services : TwstConfigServiceArray read FServices write FServices;
end;
{$IFNDEF FPC}
function GetAppConfigDir(const AGlobal : Boolean) : string;
{$ENDIF}
function wst_GetConfigFileName():string;
function wst_GetConfigObject() : TWstConfigurationObject;
function wst_GetServiceConfig(const AName : string) : TwstConfigService ;
function wst_GetServiceConfigText(const AName : string) : string ;
procedure wst_CreateDefaultFile(ADest : TStream; AConfigObj : TWstConfigurationObject);overload;
procedure wst_CreateDefaultFile(const AFileName : string; AConfigObj : TWstConfigurationObject);overload;
implementation
uses
base_soap_formatter, server_service_intf,
{$IFNDEF FPC}
xmldom, wst_delphi_xml
{$ELSE}
DOM, XmlRead, XmlWrite
{$ENDIF};
const
sCONFIG_FILE_NAME = 'wst_config.xml';
sAPPLICATION = 'Application';
sWST_CONFIG_PATH = 'WST_Configuration';
var
ConfigurationObjectInstance : TWstConfigurationObject = nil;
{$IFNDEF FPC}
function GetAppConfigDir(const AGlobal : Boolean) : string;
begin
Result := ExtractFilePath(ParamStr(0));
end;
{$ENDIF}
function wst_GetConfigFileName():string;
begin
Result := IncludeTrailingPathDelimiter(GetAppConfigDir(True)) + sCONFIG_FILE_NAME;
end;
procedure wst_LoadConfigObject(AConfig: TWstConfigurationObject; AStream : TStream);overload;
var
frmt : IFormatterBase;
locPrmName : string;
begin
frmt := TSOAPBaseFormatter.Create();
frmt.LoadFromStream(AStream);
frmt.SetSerializationStyle(ssNodeSerialization);
locPrmName := sWST_CONFIG_PATH;
frmt.Get(TypeInfo(TWstConfigurationObject),locPrmName,AConfig);
end;
procedure wst_LoadConfigObject(AConfig : TWstConfigurationObject; const AFileName : string);overload;
var
locStream : TMemoryStream;
begin
if not FileExists(AFileName) then
raise Exception.CreateFmt('File not found : "%s".',[AFileName]);
locStream := TMemoryStream.Create();
try
locStream.LoadFromFile(AFileName);
locStream.Position := 0;
wst_LoadConfigObject(AConfig,locStream);
finally
FreeAndNil(locStream);
end;
end;
procedure wst_CreateDefaultFile(ADest : TStream; AConfigObj : TWstConfigurationObject);overload;
var
locObj : TWstConfigurationObject;
c, i : Integer;
servReg : IServerServiceRegistry;
frmt : IFormatterBase;
createdHere : Boolean;
begin
if ( AConfigObj <> nil ) then
locObj := AConfigObj
else
locObj := TWstConfigurationObject.Create();
try
createdHere := ( AConfigObj = nil );
servReg := GetServerServiceRegistry();
c := servReg.GetCount();
locObj.Services.SetLength(0);
if ( c > 0 ) then begin
locObj.Services.SetLength(c);
for i := 0 to Pred(c) do begin
locObj.Services[i].Name := servReg.GetName(i);
end;
end;
frmt := TSOAPBaseFormatter.Create();
frmt.SetSerializationStyle(ssNodeSerialization);
frmt.BeginObject(sAPPLICATION,TypeInfo(TWstConfigurationObject));
frmt.Put(sWST_CONFIG_PATH,TypeInfo(TWstConfigurationObject),locObj);
frmt.EndScope();
frmt.SaveToStream(ADest);
finally
if createdHere then
FreeAndNil(locObj);
end;
end;
procedure wst_CreateDefaultFile(const AFileName : string; AConfigObj : TWstConfigurationObject);overload;
var
locStream : TMemoryStream;
begin
locStream := TMemoryStream.Create();
try
wst_CreateDefaultFile(locStream,AConfigObj);
locStream.SaveToFile(AFileName);
finally
FreeAndNil(locStream);
end;
end;
function wst_GetConfigObject() : TWstConfigurationObject;
var
locFileName : string;
begin
if ( ConfigurationObjectInstance = nil ) then begin
ConfigurationObjectInstance := TWstConfigurationObject.Create();
locFileName := wst_GetConfigFileName();
if FileExists(locFileName) then
wst_LoadConfigObject(ConfigurationObjectInstance,locFileName)
else
wst_CreateDefaultFile(locFileName,ConfigurationObjectInstance);
end;
Result := ConfigurationObjectInstance;
end;
function wst_GetServiceConfig(const AName : string) : TwstConfigService ;
var
i, c : Integer;
servs : TwstConfigServiceArray;
begin
Result := nil;
servs := wst_GetConfigObject().Services;
c := servs.Length;
for i := 0 to Pred(c) do begin
if AnsiSameText(AName,servs[i].Name) then begin
Result := servs[i];
Break;
end;
end;
end;
function wst_GetServiceConfigText(const AName : string) : string ;
var
s : TwstConfigService;
begin
s := wst_GetServiceConfig(AName);
if ( s <> nil ) then
Result := s.GetConfigText()
else
Result := '';
end;
{ TwstConfigServiceArray }
function TwstConfigServiceArray.GetItem(AIndex: Integer): TwstConfigService;
begin
Result := Inherited GetItem(AIndex) As TwstConfigService;
end;
class function TwstConfigServiceArray.GetItemClass() : TBaseRemotableClass;
begin
Result := TwstConfigService;
end;
{ TWstConfigurationObject }
constructor TWstConfigurationObject.Create;
begin
inherited;
FServices := TwstConfigServiceArray.Create();
end;
destructor TWstConfigurationObject.Destroy;
begin
FreeAndNil(FServices);
inherited;
end;
{ TwstConfigService }
function TwstConfigService.GetConfigText() : string;
begin
Result := Format('PoolMin=%d;PoolMax=%d;Pooled=',[PoolMin,PoolMax]);
if Pooled then
Result := Result + 'True'
else
Result := Result + 'False';
end;
initialization
GetTypeRegistry().Register(sWST_BASE_NS,TypeInfo(TwstConfigService),'Service');
GetTypeRegistry().Register(sWST_BASE_NS,TypeInfo(TwstConfigServiceArray),'Services');
GetTypeRegistry().Register(sWST_BASE_NS,TypeInfo(TWstConfigurationObject),'WST_Configuration');
TwstConfigService.RegisterAttributeProperty('Name');
GetTypeRegistry().ItemByTypeInfo[TypeInfo(TwstConfigServiceArray)].RegisterExternalPropertyName('Item','service');
finalization
if ( ConfigurationObjectInstance <> nil ) and
( GetServerServiceRegistry.GetCount() <> ConfigurationObjectInstance.Services.Length )
then begin
wst_CreateDefaultFile(wst_GetConfigFileName(),nil);
end;
FreeAndNil(ConfigurationObjectInstance);
end.

View File

@ -0,0 +1,13 @@
unit delphi_init_com;
interface
uses ActiveX;
implementation
initialization
CoInitialize(nil);
finalization
CoUninitialize();
end.

View File

@ -49,8 +49,6 @@ type
FHTTPServerObject: TIdHTTPServer;
FRootAddress : string;
private
function GenerateWSDLTable():string;
procedure ProcessWSDLRequest(
{$IFDEF INDY_10}
AContext : TIdContext;
@ -93,18 +91,14 @@ type
implementation
uses base_service_intf,
server_service_intf, server_service_imputils,
server_service_soap, server_binary_formatter, server_service_xmlrpc,
metadata_repository, metadata_wsdl,
uses
{$IFNDEF FPC}
ActiveX, XMLDoc,XMLIntf,xmldom, wst_delphi_xml,
{$ELSE}
DOM, XMLWrite, wst_fpc_xml,
ActiveX,
{$ENDIF}
metadata_service, metadata_service_binder, metadata_service_imp,
base_service_intf,
server_service_intf, server_service_imputils,
metadata_wsdl;
user_service_intf, user_service_intf_binder, user_service_intf_imp;
{$IFNDEF FPC}
type
@ -129,11 +123,6 @@ begin
end;
{$ENDIF}
const
sSEPARATOR = '/';
sSERVICES_PREFIXE = 'services';
sWSDL = 'WSDL';
function ExtractNextPathElement(var AFullPath : string):string;
var
i : SizeInt;
@ -154,78 +143,8 @@ begin
end;
end;
function GetWSDL(const ARepName, ARootAddress: shortstring):string;
var
strm : TMemoryStream;
rep : PServiceRepository;
doc :TXMLDocument;
i : SizeInt;
s : string;
begin
Result := '';
rep := nil;
doc := Nil;
i := GetModuleMetadataMngr().IndexOfName(ARepName);
if ( i < 0 ) then
Exit;
strm := TMemoryStream.Create();
try
s := GetModuleMetadataMngr().GetRepositoryName(i);
GetModuleMetadataMngr().LoadRepositoryName(s,ARootAddress,rep);
//if ( GetModuleMetadataMngr().LoadRepositoryName(s,rep) > 0 ) then
//rep^.namespace := 'urn:wst';
strm.Clear();
doc := CreateDoc();
GenerateWSDL(rep,doc);
WriteXMLFile(doc,strm);
i := strm.Size;
if ( i > 0 ) then begin
SetLength(Result,i);
Move(strm.memory^,Result[1],i);
end;
finally
ReleaseDomNode(doc);
strm.Free();
GetModuleMetadataMngr().ClearRepository(rep);
end;
end;
{ TwstIndyHttpListener }
function TwstIndyHttpListener.GenerateWSDLTable(): string;
var
r : IModuleMetadataMngr;
i : Integer;
begin
r := GetModuleMetadataMngr();
Result := '<html>' +
'<head>'+
'<title>'+
'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%">';
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>' +
'</tr>';
end;
Result := Result +
'</table>'+
'</body>'+
'</head>'+
'</html>';
end;
procedure TwstIndyHttpListener.ProcessWSDLRequest(
{$IFDEF INDY_10}
AContext : TIdContext;
@ -241,7 +160,7 @@ begin
locRepName := ExtractNextPathElement(APath);
if AnsiSameText(sWSDL,locRepName) then
locRepName := ExtractNextPathElement(APath);
strBuff := GetWSDL(locRepName,FRootAddress);
strBuff := GenerateWSDL(locRepName,FRootAddress);
i := Length(strBuff);
if ( i > 0 ) then begin
AResponseInfo.ContentType := 'text/xml';
@ -250,7 +169,7 @@ begin
AResponseInfo.ContentStream.Write(strBuff[1],i);
Exit;
end;
AResponseInfo.ContentText := GenerateWSDLTable();
AResponseInfo.ContentText := GenerateWSDLHtmlTable();
AResponseInfo.ContentType := 'text/html';
end;
@ -395,17 +314,6 @@ begin
end;
initialization
RegisterStdTypes();
Server_service_RegisterBinaryFormat();
Server_service_RegisterSoapFormat();
Server_service_RegisterXmlRpcFormat();
RegisterUserServiceImplementationFactory();
Server_service_RegisterUserServiceService();
Register_user_service_intf_ServiceMetadata();
RegisterWSTMetadataServiceImplementationFactory();
Server_service_RegisterWSTMetadataServiceService();
end.

View File

@ -76,12 +76,18 @@ type
);
end;
procedure GenerateWSDL(AMdtdRep : PServiceRepository; ADoc : TXMLDocument);
procedure GenerateWSDL(AMdtdRep : PServiceRepository; ADoc : TXMLDocument);overload;
function GenerateWSDL(const ARepName, ARootAddress : string):string;overload;
function GetWsdlTypeHandlerRegistry():IWsdlTypeHandlerRegistry;
implementation
uses {$IFNDEF FPC}wst_delphi_rtti_utils{$ELSE}wst_fpc_xml{$ENDIF};
uses
{$IFNDEF FPC}
wst_delphi_rtti_utils
{$ELSE}
wst_fpc_xml, XmlWrite
{$ENDIF};
const
sWSDL_NS = 'http://schemas.xmlsoap.org/wsdl/';
@ -569,6 +575,40 @@ begin
end;
function GenerateWSDL(const ARepName, ARootAddress : string):string;overload;
var
strm : TMemoryStream;
rep : PServiceRepository;
doc :TXMLDocument;
i : SizeInt;
s : string;
begin
Result := '';
rep := nil;
doc := Nil;
i := GetModuleMetadataMngr().IndexOfName(ARepName);
if ( i < 0 ) then
Exit;
strm := TMemoryStream.Create();
try
s := GetModuleMetadataMngr().GetRepositoryName(i);
GetModuleMetadataMngr().LoadRepositoryName(s,ARootAddress,rep);
strm.Clear();
doc := CreateDoc();
GenerateWSDL(rep,doc);
WriteXMLFile(doc,strm);
i := strm.Size;
if ( i > 0 ) then begin
SetLength(Result,i);
Move(strm.memory^,Result[1],i);
end;
finally
ReleaseDomNode(doc);
strm.Free();
GetModuleMetadataMngr().ClearRepository(rep);
end;
end;
function GetWsdlTypeHandlerRegistry():IWsdlTypeHandlerRegistry;
begin
Result := WsdlTypeHandlerRegistryInst;

View File

@ -6,19 +6,33 @@ uses
SysUtils,
Classes,
ActiveX,
delphi_init_com in '..\..\..\delphi_init_com.pas',
server_service_soap,
server_binary_formatter,
server_service_xmlrpc,
indy_http_server,
metadata_service,
logger_extension,
wst_delphi_rtti_utils in '..\..\..\wst_delphi_rtti_utils.pas',
server_listener in '..\..\..\server_listener.pas';
server_listener in '..\..\..\server_listener.pas',
config_objects in '..\..\..\config_objects.pas',
user_service_intf in '..\..\user_service_intf.pas',
user_service_intf_binder in '..\..\user_service_intf_binder.pas',
user_service_intf_imp in '..\..\user_service_intf_imp.pas',
server_service_intf in '..\..\..\server_service_intf.pas';
var
AppObject : TwstIndyHttpListener;
begin
{$IFNDEF FPC}
CoInitialize(nil);
try
{$ENDIF}
Server_service_RegisterBinaryFormat();
Server_service_RegisterSoapFormat();
Server_service_RegisterXmlRpcFormat();
RegisterUserServiceImplementationFactory();
Server_service_RegisterUserServiceService();
//wst_CreateDefaultFile(wst_GetConfigFileName(),nil);
AppObject := TwstIndyHttpListener.Create();
try
WriteLn('"Web Service Toolkit" HTTP Server sample listening at:');
@ -31,10 +45,5 @@ begin
finally
FreeAndNil(AppObject);
end;
{$IFNDEF FPC}
finally
CoUninitialize();
end;
{$ENDIF}
end.

View File

@ -0,0 +1,43 @@
-$A8
-$B-
-$C+
-$D+
-$E-
-$F-
-$G+
-$H+
-$I+
-$J-
-$K-
-$L+
-$M-
-$N+
-$O+
-$P+
-$Q-
-$R-
-$S-
-$T-
-$U-
-$V+
-$W-
-$X+
-$YD
-$Z1
-cg
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
-H+
-W+
-M
-$M16384,1048576
-K$00400000
-N"obj"
-LE"c:\program files\borland\delphi7\Projects\Bpl"
-LN"c:\program files\borland\delphi7\Projects\Bpl"
-U"..\..\;..\..\..\;..\..\..\wst_rtti_filter"
-O"..\..\;..\..\..\;..\..\..\wst_rtti_filter"
-I"..\..\;..\..\..\;..\..\..\wst_rtti_filter"
-R"..\..\;..\..\..\;..\..\..\wst_rtti_filter"
-w-UNSAFE_TYPE
-w-UNSAFE_CODE
-w-UNSAFE_CAST

View File

@ -0,0 +1,161 @@
[FileVersion]
Version=7.0
[Compiler]
A=8
B=0
C=1
D=1
E=0
F=0
G=1
H=1
I=1
J=0
K=0
L=1
M=0
N=1
O=1
P=1
Q=0
R=0
S=0
T=0
U=0
V=1
W=0
X=1
Y=1
Z=1
ShowHints=1
ShowWarnings=1
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
NamespacePrefix=
SymbolDeprecated=1
SymbolLibrary=1
SymbolPlatform=1
UnitLibrary=1
UnitPlatform=1
UnitDeprecated=1
HResultCompat=1
HidingMember=1
HiddenVirtual=1
Garbage=1
BoundsError=1
ZeroNilCompat=1
StringConstTruncated=1
ForLoopVarVarPar=1
TypedConstVarPar=1
AsgToTypedConst=1
CaseLabelRange=1
ForVariable=1
ConstructingAbstract=1
ComparisonFalse=1
ComparisonTrue=1
ComparingSignedUnsigned=1
CombiningSignedUnsigned=1
UnsupportedConstruct=1
FileOpen=1
FileOpenUnitSrc=1
BadGlobalSymbol=1
DuplicateConstructorDestructor=1
InvalidDirective=1
PackageNoLink=1
PackageThreadVar=1
ImplicitImport=1
HPPEMITIgnored=1
NoRetVal=1
UseBeforeDef=1
ForLoopVarUndef=1
UnitNameMismatch=1
NoCFGFileFound=1
MessageDirective=1
ImplicitVariants=1
UnicodeToLocale=1
LocaleToUnicode=1
ImagebaseMultiple=1
SuspiciousTypecast=1
PrivatePropAccessor=1
UnsafeType=0
UnsafeCode=0
UnsafeCast=0
[Linker]
MapFile=0
OutputObjs=0
ConsoleApp=1
DebugInfo=0
RemoteSymbols=0
MinStackSize=16384
MaxStackSize=1048576
ImageBase=4194304
ExeDescription=
[Directories]
OutputDir=
UnitOutputDir=obj
PackageDLLOutputDir=
PackageDCPOutputDir=
SearchPath=..\..\;..\..\..\;..\..\..\wst_rtti_filter
Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;FIBDBMidas7;Jcl;JclVcl;JvCoreD7R;JvSystemD7R;JvStdCtrlsD7R;JvAppFrmD7R;JvBandsD7R;JvDBD7R;JvDlgsD7R;JvBDED7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;JvGlobusD7R;JvHMID7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvRuntimeDesignD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;dxForumLibD7;cxLibraryVCLD7;cxPageControlVCLD7;dxBarD7;dxComnD7;dxBarDBNavD7;dxBarExtItemsD7;dxBarExtDBItemsD7;dxsbD7;dxmdsD7;dxdbtrD7;dxtrmdD7;dxorgcD7;dxdborD7;dxEdtrD7;EQTLD7;ECQDBCD7;EQDBTLD7;EQGridD7;dxGrEdD7;dxExELD7;dxELibD7;cxEditorsVCLD7;cxGridVCLD7;dxThemeD7;cxDataD7;cxGridUtilsVCLD7;dxPSCoreD7;dxPsPrVwAdvD7;dxPSLnksD7;dxPSTeeChartD7;dxPSDBTeeChartD7;dxPSdxDBTVLnkD7;dxPSdxOCLnkD7;dxPSdxDBOCLnkD7;dxPScxGridLnkD7;dxPSTLLnkD7;qrpt
Conditionals=
DebugSourceDirs=
UsePackages=0
[Parameters]
RunParams=
HostApplication=
Launcher=
UseLauncher=0
DebugCWD=
[Language]
ActiveLang=
ProjectLang=
RootDir=C:\Program Files\Borland\Delphi7\Bin\
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=1036
CodePage=1252
[Version Info Keys]
CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
[Excluded Packages]
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxDBTLLnkD7.bpl=ExpressPrinting System ReportLink for ExpressQuantumDBTreeList by Developer Express Inc.
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxDBGrLnkD7.bpl=ExpressPrinting System ReportLink for ExpressQuantumGrid by Developer Express Inc.
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxInsLnkD7.bpl=ExpressPrinting System ReportLink for ExpressInspector by Developer Express Inc.
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxOILnkD7.bpl=ExpressPrinting System ReportLink for ExpressRTTIInspector by Developer Express Inc.
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxMVLnkD7.bpl=ExpressPrinting System ReportLink for ExpressMasterView by Developer Express Inc.
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxFCLnkD7.bpl=ExpressPrinting System ReportLinks for ExpressFlowChart by Developer Express Inc.
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPScxSSLnkD7.bpl=ExpressPrinting System ReportLink for ExpressSpreadSheet by Developer Express Inc.
[HistoryLists\hlConditionals]
Count=1
Item0=INDY_9
[HistoryLists\hlUnitAliases]
Count=1
Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
[HistoryLists\hlSearchPath]
Count=6
Item0=..\..\;..\..\..\;..\..\..\wst_rtti_filter
Item1=..\..\;..\..\..\
Item2=..\..\..\;..\..\;..\..\..\wst_rtti_filter
Item3=..\..\..\;..\..\
Item4=..\..\..\
Item5=..\
[HistoryLists\hlUnitOutputDirectory]
Count=1
Item0=obj

View File

@ -0,0 +1,36 @@
library lib_server;
uses
SysUtils, Classes,
base_service_intf,
server_service_intf,
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,
user_service_intf_binder,
user_service_intf_imp;
{$R *.res}
exports
wstHandleRequest name WST_LIB_HANDLER;
begin
RegisterStdTypes();
Server_service_RegisterBinaryFormat();
Server_service_RegisterSoapFormat();
Server_service_RegisterXmlRpcFormat();
RegisterUserServiceImplementationFactory();
Server_service_RegisterUserServiceService();
RegisterWSTMetadataServiceImplementationFactory();
Server_service_RegisterWSTMetadataServiceService();
end.

View File

@ -0,0 +1,43 @@
-$A8
-$B-
-$C+
-$D+
-$E-
-$F-
-$G+
-$H+
-$I+
-$J-
-$K-
-$L+
-$M-
-$N+
-$O+
-$P+
-$Q-
-$R-
-$S-
-$T-
-$U-
-$V+
-$W-
-$X+
-$YD
-$Z1
-cg
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
-H+
-W+
-M
-$M16384,1048576
-K$00400000
-N"obj"
-LE"c:\program files\borland\delphi7\Projects\Bpl"
-LN"c:\program files\borland\delphi7\Projects\Bpl"
-U"..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\..\wst_rtti_filter"
-O"..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\..\wst_rtti_filter"
-I"..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\..\wst_rtti_filter"
-R"..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\..\wst_rtti_filter"
-w-UNSAFE_TYPE
-w-UNSAFE_CODE
-w-UNSAFE_CAST

View File

@ -0,0 +1,160 @@
[FileVersion]
Version=7.0
[Compiler]
A=8
B=0
C=1
D=1
E=0
F=0
G=1
H=1
I=1
J=0
K=0
L=1
M=0
N=1
O=1
P=1
Q=0
R=0
S=0
T=0
U=0
V=1
W=0
X=1
Y=1
Z=1
ShowHints=1
ShowWarnings=1
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
NamespacePrefix=
SymbolDeprecated=1
SymbolLibrary=1
SymbolPlatform=1
UnitLibrary=1
UnitPlatform=1
UnitDeprecated=1
HResultCompat=1
HidingMember=1
HiddenVirtual=1
Garbage=1
BoundsError=1
ZeroNilCompat=1
StringConstTruncated=1
ForLoopVarVarPar=1
TypedConstVarPar=1
AsgToTypedConst=1
CaseLabelRange=1
ForVariable=1
ConstructingAbstract=1
ComparisonFalse=1
ComparisonTrue=1
ComparingSignedUnsigned=1
CombiningSignedUnsigned=1
UnsupportedConstruct=1
FileOpen=1
FileOpenUnitSrc=1
BadGlobalSymbol=1
DuplicateConstructorDestructor=1
InvalidDirective=1
PackageNoLink=1
PackageThreadVar=1
ImplicitImport=1
HPPEMITIgnored=1
NoRetVal=1
UseBeforeDef=1
ForLoopVarUndef=1
UnitNameMismatch=1
NoCFGFileFound=1
MessageDirective=1
ImplicitVariants=1
UnicodeToLocale=1
LocaleToUnicode=1
ImagebaseMultiple=1
SuspiciousTypecast=1
PrivatePropAccessor=1
UnsafeType=0
UnsafeCode=0
UnsafeCast=0
[Linker]
MapFile=0
OutputObjs=0
ConsoleApp=1
DebugInfo=0
RemoteSymbols=0
MinStackSize=16384
MaxStackSize=1048576
ImageBase=4194304
ExeDescription=
[Directories]
OutputDir=
UnitOutputDir=obj
PackageDLLOutputDir=
PackageDCPOutputDir=
SearchPath=..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\..\wst_rtti_filter
Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;FIBDBMidas7;Jcl;JclVcl;JvCoreD7R;JvSystemD7R;JvStdCtrlsD7R;JvAppFrmD7R;JvBandsD7R;JvDBD7R;JvDlgsD7R;JvBDED7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;JvGlobusD7R;JvHMID7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvRuntimeDesignD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;dxForumLibD7;cxLibraryVCLD7;cxPageControlVCLD7;dxBarD7;dxComnD7;dxBarDBNavD7;dxBarExtItemsD7;dxBarExtDBItemsD7;dxsbD7;dxmdsD7;dxdbtrD7;dxtrmdD7;dxorgcD7;dxdborD7;dxEdtrD7;EQTLD7;ECQDBCD7;EQDBTLD7;EQGridD7;dxGrEdD7;dxExELD7;dxELibD7;cxEditorsVCLD7;cxGridVCLD7;dxThemeD7;cxDataD7;cxGridUtilsVCLD7;dxPSCoreD7;dxPsPrVwAdvD7;dxPSLnksD7;dxPSTeeChartD7;dxPSDBTeeChartD7;dxPSdxDBTVLnkD7;dxPSdxOCLnkD7;dxPSdxDBOCLnkD7;dxPScxGridLnkD7;dxPSTLLnkD7;qrpt
Conditionals=
DebugSourceDirs=
UsePackages=0
[Parameters]
RunParams=
HostApplication=
Launcher=
UseLauncher=0
DebugCWD=
[Language]
ActiveLang=
ProjectLang=
RootDir=C:\Program Files\Borland\Delphi7\Bin\
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=1036
CodePage=1252
[Version Info Keys]
CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
[Excluded Packages]
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxDBTLLnkD7.bpl=ExpressPrinting System ReportLink for ExpressQuantumDBTreeList by Developer Express Inc.
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxDBGrLnkD7.bpl=ExpressPrinting System ReportLink for ExpressQuantumGrid by Developer Express Inc.
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxInsLnkD7.bpl=ExpressPrinting System ReportLink for ExpressInspector by Developer Express Inc.
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxOILnkD7.bpl=ExpressPrinting System ReportLink for ExpressRTTIInspector by Developer Express Inc.
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxMVLnkD7.bpl=ExpressPrinting System ReportLink for ExpressMasterView by Developer Express Inc.
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPSdxFCLnkD7.bpl=ExpressPrinting System ReportLinks for ExpressFlowChart by Developer Express Inc.
C:\Program Files\Developer Express Inc\ExpressPrinting System\Delphi 7\Lib\dxPScxSSLnkD7.bpl=ExpressPrinting System ReportLink for ExpressSpreadSheet by Developer Express Inc.
[HistoryLists\hlUnitAliases]
Count=1
Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
[HistoryLists\hlSearchPath]
Count=8
Item0=..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\..\wst_rtti_filter
Item1=..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\wst_rtti_filter
Item2=..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse
Item3=..\..\;..\..\..\
Item4=$(DELPHI)\Lib\Debug;C:\PROGRA~1\Borland\Delphi7\MyTools\JVCL\3.20\jcl\lib\d7\debug;..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\..\..\
Item5=..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\synapse;..\..\..\..\
Item6=..\..\
Item7=..\
[HistoryLists\hlUnitOutputDirectory]
Count=1
Item0=obj

View File

@ -0,0 +1,50 @@
program tcp_server;
{$APPTYPE CONSOLE}
uses
Classes,
SysUtils, ActiveX,
base_service_intf,
server_service_soap,
base_binary_formatter,
server_binary_formatter,
metadata_service,
metadata_service_imp,
metadata_service_binder,
synapse_tcp_server,
user_service_intf,
user_service_intf_binder,
user_service_intf_imp,
imp_helper,
server_service_xmlrpc;
{$INCLUDE wst.inc}
var
listnerThread : TServerListnerThread;
begin
CoInitialize(nil);
try
SetLogger(TConsoleLogger.Create());
Server_service_RegisterBinaryFormat();
Server_service_RegisterSoapFormat();
Server_service_RegisterXmlRpcFormat();
RegisterWSTMetadataServiceImplementationFactory();
//Server_service_RegisterWSTMetadataServiceService();
RegisterWSTMetadataServiceImplementationFactory();
RegisterUserServiceImplementationFactory();
Server_service_RegisterUserServiceService();
Logger().Log('WST sample TCP Server listning on "%s"',[sSERVER_PORT]);
Logger().Log('Hit <enter> to stop.');
listnerThread := TServerListnerThread.Create();
ReadLn;
finally
CoUninitialize();
end;
end.

View File

@ -12,7 +12,7 @@
<MainUnit Value="0"/>
<IconPath Value="./"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="1"/>
<ActiveEditorIndexAtStart Value="8"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
@ -34,15 +34,15 @@
<PackageName Value="indylaz"/>
</Item1>
</RequiredPackages>
<Units Count="49">
<Units Count="54">
<Unit0>
<Filename Value="http_server.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="http_server"/>
<CursorPos X="33" Y="16"/>
<TopLine Value="1"/>
<CursorPos X="14" Y="30"/>
<TopLine Value="13"/>
<EditorIndex Value="0"/>
<UsageCount Value="81"/>
<UsageCount Value="103"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
@ -50,24 +50,24 @@
<UnitName Value="app_object"/>
<CursorPos X="42" Y="214"/>
<TopLine Value="200"/>
<UsageCount Value="35"/>
<UsageCount Value="33"/>
</Unit1>
<Unit2>
<Filename Value="..\..\base_service_intf.pas"/>
<UnitName Value="base_service_intf"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="21"/>
<UsageCount Value="39"/>
<CursorPos X="1" Y="4398"/>
<TopLine Value="4387"/>
<EditorIndex Value="8"/>
<UsageCount Value="49"/>
<Loaded Value="True"/>
</Unit2>
<Unit3>
<Filename Value="..\..\metadata_wsdl.pas"/>
<UnitName Value="metadata_wsdl"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="23"/>
<UsageCount Value="40"/>
<CursorPos X="80" Y="80"/>
<TopLine Value="66"/>
<EditorIndex Value="9"/>
<UsageCount Value="50"/>
<Loaded Value="True"/>
</Unit3>
<Unit4>
@ -75,44 +75,43 @@
<UnitName Value="metadata_service_imp"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="9"/>
<UsageCount Value="24"/>
<Loaded Value="True"/>
<UsageCount Value="34"/>
</Unit4>
<Unit5>
<Filename Value="..\user_service_intf_imp.pas"/>
<UnitName Value="user_service_intf_imp"/>
<CursorPos X="22" Y="161"/>
<TopLine Value="160"/>
<EditorIndex Value="17"/>
<UsageCount Value="37"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="6"/>
<UsageCount Value="47"/>
<Loaded Value="True"/>
</Unit5>
<Unit6>
<Filename Value="..\user_service_intf_binder.pas"/>
<UnitName Value="user_service_intf_binder"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="5"/>
<UsageCount Value="23"/>
<CursorPos X="55" Y="16"/>
<TopLine Value="14"/>
<EditorIndex Value="3"/>
<UsageCount Value="33"/>
<Loaded Value="True"/>
</Unit6>
<Unit7>
<Filename Value="..\user_service_intf.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="user_service_intf"/>
<CursorPos X="1" Y="1"/>
<CursorPos X="3" Y="119"/>
<TopLine Value="1"/>
<EditorIndex Value="18"/>
<UsageCount Value="37"/>
<EditorIndex Value="7"/>
<UsageCount Value="54"/>
<Loaded Value="True"/>
</Unit7>
<Unit8>
<Filename Value="..\..\metadata_repository.pas"/>
<UnitName Value="metadata_repository"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="26"/>
<UsageCount Value="40"/>
<TopLine Value="7"/>
<EditorIndex Value="12"/>
<UsageCount Value="50"/>
<Loaded Value="True"/>
</Unit8>
<Unit9>
@ -120,207 +119,187 @@
<UnitName Value="semaphore"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<EditorIndex Value="22"/>
<UsageCount Value="24"/>
<Loaded Value="True"/>
<UsageCount Value="27"/>
</Unit9>
<Unit10>
<Filename Value="..\..\server_service_intf.pas"/>
<UnitName Value="server_service_intf"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="16"/>
<UsageCount Value="39"/>
<CursorPos X="67" Y="105"/>
<TopLine Value="102"/>
<EditorIndex Value="5"/>
<UsageCount Value="49"/>
<Loaded Value="True"/>
</Unit10>
<Unit11>
<Filename Value="..\..\server_service_soap.pas"/>
<UnitName Value="server_service_soap"/>
<CursorPos X="1" Y="1"/>
<CursorPos X="17" Y="22"/>
<TopLine Value="1"/>
<EditorIndex Value="13"/>
<UsageCount Value="39"/>
<Loaded Value="True"/>
<UsageCount Value="42"/>
</Unit11>
<Unit12>
<Filename Value="..\..\base_soap_formatter.pas"/>
<UnitName Value="base_soap_formatter"/>
<CursorPos X="17" Y="28"/>
<TopLine Value="13"/>
<EditorIndex Value="15"/>
<UsageCount Value="39"/>
<Loaded Value="True"/>
<CursorPos X="36" Y="1576"/>
<TopLine Value="1586"/>
<UsageCount Value="43"/>
</Unit12>
<Unit13>
<Filename Value="..\..\server_service_imputils.pas"/>
<UnitName Value="server_service_imputils"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="20"/>
<UsageCount Value="38"/>
<Loaded Value="True"/>
<UsageCount Value="37"/>
</Unit13>
<Unit14>
<Filename Value="..\..\..\..\..\..\lazarus_23_215\others_package\indy\indy-10.2.0.1\fpc\Protocols\IdCustomHTTPServer.pas"/>
<UnitName Value="IdCustomHTTPServer"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="6"/>
<UsageCount Value="4"/>
</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="6"/>
<UsageCount Value="4"/>
</Unit15>
<Unit16>
<Filename Value="..\..\wst.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="5"/>
<UsageCount Value="3"/>
</Unit16>
<Unit17>
<Filename Value="..\..\xmlrpc_formatter.pas"/>
<UnitName Value="xmlrpc_formatter"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="28"/>
<UsageCount Value="6"/>
<UsageCount Value="4"/>
</Unit17>
<Unit18>
<Filename Value="..\..\server_service_xmlrpc.pas"/>
<UnitName Value="server_service_xmlrpc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="8"/>
<UsageCount Value="37"/>
<Loaded Value="True"/>
<CursorPos X="21" Y="22"/>
<TopLine Value="7"/>
<UsageCount Value="40"/>
</Unit18>
<Unit19>
<Filename Value="..\..\server_binary_formatter.pas"/>
<UnitName Value="server_binary_formatter"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="14"/>
<UsageCount Value="35"/>
<Loaded Value="True"/>
<UsageCount Value="38"/>
</Unit19>
<Unit20>
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
<UnitName Value="base_xmlrpc_formatter"/>
<CursorPos X="18" Y="21"/>
<TopLine Value="1"/>
<EditorIndex Value="12"/>
<UsageCount Value="35"/>
<Loaded Value="True"/>
<CursorPos X="3" Y="985"/>
<TopLine Value="974"/>
<UsageCount Value="38"/>
</Unit20>
<Unit21>
<Filename Value="..\..\..\..\..\..\lazarus23_213\others_package\indy\indy-10.2.0.1\fpc\Core\IdSocketHandle.pas"/>
<UnitName Value="IdSocketHandle"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="6"/>
<UsageCount Value="4"/>
</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="7"/>
<UsageCount Value="5"/>
</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="7"/>
<UsageCount Value="5"/>
</Unit23>
<Unit24>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\systemh.inc"/>
<CursorPos X="21" Y="208"/>
<TopLine Value="193"/>
<EditorIndex Value="25"/>
<UsageCount Value="21"/>
<EditorIndex Value="11"/>
<UsageCount Value="31"/>
<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="7"/>
<UsageCount Value="5"/>
</Unit25>
<Unit26>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\i386\fastmove.inc"/>
<CursorPos X="11" Y="835"/>
<TopLine Value="821"/>
<UsageCount Value="8"/>
<UsageCount Value="6"/>
</Unit26>
<Unit27>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\system.inc"/>
<CursorPos X="11" Y="306"/>
<TopLine Value="285"/>
<EditorIndex Value="6"/>
<UsageCount Value="29"/>
<Loaded Value="True"/>
<UsageCount Value="39"/>
</Unit27>
<Unit28>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\generic.inc"/>
<CursorPos X="5" Y="1289"/>
<TopLine Value="1"/>
<UsageCount Value="14"/>
<UsageCount Value="12"/>
</Unit28>
<Unit29>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\system.fpd"/>
<CursorPos X="22" Y="17"/>
<TopLine Value="1"/>
<UsageCount Value="7"/>
<UsageCount Value="5"/>
</Unit29>
<Unit30>
<Filename Value="..\..\wst_fpc_xml.pas"/>
<UnitName Value="wst_fpc_xml"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="4"/>
<UsageCount Value="28"/>
<Loaded Value="True"/>
<UsageCount Value="38"/>
</Unit30>
<Unit31>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\sysutils\sysstrh.inc"/>
<CursorPos X="11" Y="66"/>
<TopLine Value="52"/>
<EditorIndex Value="3"/>
<UsageCount Value="28"/>
<Loaded Value="True"/>
<UsageCount Value="38"/>
</Unit31>
<Unit32>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\sysutils\sysstr.inc"/>
<CursorPos X="6" Y="44"/>
<TopLine Value="30"/>
<UsageCount Value="7"/>
<UsageCount Value="5"/>
</Unit32>
<Unit33>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\win\sysosh.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="51"/>
<UsageCount Value="7"/>
<UsageCount Value="5"/>
</Unit33>
<Unit34>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\objpash.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="322"/>
<UsageCount Value="7"/>
<CursorPos X="8" Y="216"/>
<TopLine Value="203"/>
<UsageCount Value="10"/>
</Unit34>
<Unit35>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\varianth.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="7"/>
<UsageCount Value="5"/>
</Unit35>
<Unit36>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\rtti.inc"/>
<CursorPos X="21" Y="77"/>
<TopLine Value="5"/>
<EditorIndex Value="7"/>
<UsageCount Value="28"/>
<CursorPos X="36" Y="64"/>
<TopLine Value="101"/>
<EditorIndex Value="4"/>
<UsageCount Value="38"/>
<Loaded Value="True"/>
</Unit36>
<Unit37>
@ -328,24 +307,20 @@
<UnitName Value="metadata_service"/>
<CursorPos X="26" Y="13"/>
<TopLine Value="1"/>
<EditorIndex Value="10"/>
<UsageCount Value="24"/>
<Loaded Value="True"/>
<UsageCount Value="34"/>
</Unit37>
<Unit38>
<Filename Value="..\..\wst_rtti_filter\cursor_intf.pas"/>
<UnitName Value="cursor_intf"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="11"/>
<UsageCount Value="24"/>
<Loaded Value="True"/>
<UsageCount Value="23"/>
</Unit38>
<Unit39>
<Filename Value="..\user_service_intf.wst"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="8"/>
<UsageCount Value="6"/>
<SyntaxHighlighter Value="None"/>
</Unit39>
<Unit40>
@ -353,15 +328,15 @@
<UnitName Value="DOM"/>
<CursorPos X="42" Y="228"/>
<TopLine Value="215"/>
<UsageCount Value="16"/>
<UsageCount Value="14"/>
</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="24"/>
<UsageCount Value="22"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="115"/>
<EditorIndex Value="10"/>
<UsageCount Value="32"/>
<Loaded Value="True"/>
</Unit41>
<Unit42>
@ -369,16 +344,14 @@
<UnitName Value="user_service_intf_proxy"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="19"/>
<UsageCount Value="21"/>
<Loaded Value="True"/>
<UsageCount Value="31"/>
</Unit42>
<Unit43>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\others_package\indy\indy-10.2.0.1\fpc\Protocols\IdCustomHTTPServer.pas"/>
<UnitName Value="IdCustomHTTPServer"/>
<CursorPos X="14" Y="252"/>
<TopLine Value="239"/>
<UsageCount Value="10"/>
<UsageCount Value="8"/>
</Unit43>
<Unit44>
<Filename Value="..\..\type_lib_edtr\uabout.pas"/>
@ -388,7 +361,7 @@
<UnitName Value="uabout"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
<UsageCount Value="8"/>
</Unit44>
<Unit45>
<Filename Value="..\..\type_lib_edtr\uwsttypelibraryedit.pas"/>
@ -397,7 +370,7 @@
<UnitName Value="uwsttypelibraryedit"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="9"/>
<UsageCount Value="7"/>
</Unit45>
<Unit46>
<Filename Value="..\..\ide\lazarus\wstimportdlg.pas"/>
@ -407,77 +380,60 @@
<UnitName Value="wstimportdlg"/>
<CursorPos X="27" Y="7"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
<UsageCount Value="8"/>
</Unit46>
<Unit47>
<Filename Value="..\..\indy_http_server.pas"/>
<UnitName Value="indy_http_server"/>
<CursorPos X="36" Y="205"/>
<TopLine Value="197"/>
<EditorIndex Value="1"/>
<UsageCount Value="14"/>
<CursorPos X="1" Y="317"/>
<TopLine Value="293"/>
<EditorIndex Value="2"/>
<UsageCount Value="24"/>
<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"/>
<CursorPos X="28" Y="33"/>
<TopLine Value="26"/>
<UsageCount Value="23"/>
</Unit48>
<Unit49>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\aliases.inc"/>
<CursorPos X="84" Y="14"/>
<TopLine Value="1"/>
<UsageCount Value="13"/>
</Unit49>
<Unit50>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\variant.inc"/>
<CursorPos X="11" Y="24"/>
<TopLine Value="29"/>
<UsageCount Value="13"/>
</Unit50>
<Unit51>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\sysutils\osutilsh.inc"/>
<CursorPos X="53" Y="37"/>
<TopLine Value="30"/>
<UsageCount Value="16"/>
</Unit51>
<Unit52>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\win\sysutils.pp"/>
<UnitName Value="sysutils"/>
<CursorPos X="45" Y="1084"/>
<TopLine Value="1076"/>
<UsageCount Value="16"/>
</Unit52>
<Unit53>
<Filename Value="..\..\config_objects.pas"/>
<UnitName Value="config_objects"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="22"/>
<EditorIndex Value="1"/>
<UsageCount Value="13"/>
<Loaded Value="True"/>
</Unit48>
</Unit53>
</Units>
<JumpHistory Count="12" HistoryIndex="11">
<Position1>
<Filename Value="http_server.pas"/>
<Caret Line="16" Column="28" TopLine="1"/>
</Position1>
<Position2>
<Filename Value="http_server.pas"/>
<Caret Line="14" Column="19" TopLine="1"/>
</Position2>
<Position3>
<Filename Value="http_server.pas"/>
<Caret Line="23" Column="15" TopLine="1"/>
</Position3>
<Position4>
<Filename Value="..\..\indy_http_server.pas"/>
<Caret Line="47" Column="37" TopLine="28"/>
</Position4>
<Position5>
<Filename Value="http_server.pas"/>
<Caret Line="10" Column="72" TopLine="1"/>
</Position5>
<Position6>
<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>
<JumpHistory Count="0" HistoryIndex="-1"/>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
@ -489,7 +445,7 @@
<IncludeFiles Value="..\..\;$(LazarusDir)\others_package\indy\indy-10.2.0.1\fpc\Inc\"/>
<OtherUnitFiles Value="..\;..\..\;..\..\wst_rtti_filter\"/>
<UnitOutputDirectory Value="obj"/>
<SrcPath Value="$(LazarusDir)\others_package\indy\indy-10.2.0.1\fpc\Core\;$(LazarusDir)\others_package\indy\indy-10.2.0.1\fpc\Protocols\;$(LazarusDir)\others_package\indy\indy-10.2.0.1\fpc\System\"/>
<SrcPath Value="$(LazarusDir)\others_package\indy\indy-10.2.0.1\fpc\Core\;$(LazarusDir)\others_package\indy\indy-10.2.0.1\fpc\Protocols\;$(LazarusDir)\others_package\indy\indy-10.2.0.1\fpc\System\;$(LazarusDir)\others_package\indy\indy-10.2.0.1\fpc\Inc\"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>

View File

@ -7,12 +7,23 @@ uses
cthreads,
{$ENDIF}{$ENDIF}
Classes, SysUtils,
indy_http_server, metadata_service, logger_extension, server_listener;
indy_http_server, metadata_service, logger_extension, server_listener,
server_service_soap, server_binary_formatter, server_service_xmlrpc, config_objects,
user_service_intf, user_service_intf_binder, user_service_intf_imp;
var
AppObject : TwstListener;
begin
Server_service_RegisterBinaryFormat();
Server_service_RegisterSoapFormat();
Server_service_RegisterXmlRpcFormat();
RegisterUserServiceImplementationFactory();
Server_service_RegisterUserServiceService();
//wst_CreateDefaultFile(wst_GetConfigFileName(),nil);
AppObject := TwstIndyHttpListener.Create();
try
WriteLn('"Web Service Toolkit" HTTP Server sample listening at:');

View File

@ -12,7 +12,7 @@
<MainUnit Value="0"/>
<IconPath Value=".\"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="12"/>
<ActiveEditorIndexAtStart Value="0"/>
</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="50">
<Units Count="51">
<Unit0>
<Filename Value="tcp_server.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="tcp_server"/>
<CursorPos X="1" Y="53"/>
<CursorPos X="33" Y="40"/>
<TopLine Value="29"/>
<EditorIndex Value="0"/>
<UsageCount Value="83"/>
<UsageCount Value="84"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
@ -77,8 +77,8 @@
<Unit6>
<Filename Value="..\..\server_service_soap.pas"/>
<UnitName Value="server_service_soap"/>
<CursorPos X="53" Y="177"/>
<TopLine Value="157"/>
<CursorPos X="42" Y="32"/>
<TopLine Value="16"/>
<EditorIndex Value="2"/>
<UsageCount Value="29"/>
<Loaded Value="True"/>
@ -117,8 +117,8 @@
<UnitName Value="user_service_intf"/>
<CursorPos X="3" Y="27"/>
<TopLine Value="5"/>
<EditorIndex Value="10"/>
<UsageCount Value="83"/>
<EditorIndex Value="11"/>
<UsageCount Value="84"/>
<Loaded Value="True"/>
</Unit11>
<Unit12>
@ -126,7 +126,7 @@
<UnitName Value="base_service_intf"/>
<CursorPos X="15" Y="307"/>
<TopLine Value="293"/>
<EditorIndex Value="5"/>
<EditorIndex Value="6"/>
<UsageCount Value="31"/>
<Bookmarks Count="1">
<Item0 X="19" Y="545" ID="0"/>
@ -138,9 +138,7 @@
<UnitName Value="std_cursors"/>
<CursorPos X="14" Y="21"/>
<TopLine Value="7"/>
<EditorIndex Value="14"/>
<UsageCount Value="36"/>
<Loaded Value="True"/>
</Unit13>
<Unit14>
<Filename Value="..\..\wst_rtti_filter\cursor_intf.pas"/>
@ -154,7 +152,7 @@
<UnitName Value="user_service_intf_binder"/>
<CursorPos X="48" Y="34"/>
<TopLine Value="11"/>
<EditorIndex Value="9"/>
<EditorIndex Value="10"/>
<UsageCount Value="39"/>
<Loaded Value="True"/>
</Unit15>
@ -220,7 +218,7 @@
<UnitName Value="server_service_intf"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="46"/>
<EditorIndex Value="8"/>
<EditorIndex Value="9"/>
<UsageCount Value="17"/>
<Loaded Value="True"/>
</Unit25>
@ -235,7 +233,7 @@
<UnitName Value="user_service_intf_imp"/>
<CursorPos X="1" Y="56"/>
<TopLine Value="40"/>
<EditorIndex Value="11"/>
<EditorIndex Value="12"/>
<UsageCount Value="41"/>
<Loaded Value="True"/>
</Unit27>
@ -249,9 +247,11 @@
<Unit29>
<Filename Value="..\..\base_soap_formatter.pas"/>
<UnitName Value="base_soap_formatter"/>
<CursorPos X="65" Y="313"/>
<TopLine Value="304"/>
<UsageCount Value="8"/>
<CursorPos X="24" Y="967"/>
<TopLine Value="941"/>
<EditorIndex Value="3"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit29>
<Unit30>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\typinfo.pp"/>
@ -273,7 +273,7 @@
<UnitName Value="imp_helper"/>
<CursorPos X="1" Y="44"/>
<TopLine Value="32"/>
<UsageCount Value="52"/>
<UsageCount Value="53"/>
</Unit32>
<Unit33>
<Filename Value="..\..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\classes\persist.inc"/>
@ -297,9 +297,9 @@
<Unit36>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<UnitName Value="synapse_tcp_server"/>
<CursorPos X="3" Y="325"/>
<TopLine Value="309"/>
<EditorIndex Value="6"/>
<CursorPos X="40" Y="92"/>
<TopLine Value="67"/>
<EditorIndex Value="7"/>
<UsageCount Value="19"/>
<Loaded Value="True"/>
</Unit36>
@ -335,9 +335,7 @@
<UnitName Value="blcksock"/>
<CursorPos X="1" Y="2407"/>
<TopLine Value="2393"/>
<EditorIndex Value="13"/>
<UsageCount Value="13"/>
<Loaded Value="True"/>
</Unit41>
<Unit42>
<Filename Value="..\..\server_service_xmlrpc.pas"/>
@ -345,8 +343,8 @@
<UnitName Value="server_service_xmlrpc"/>
<CursorPos X="1" Y="83"/>
<TopLine Value="69"/>
<EditorIndex Value="3"/>
<UsageCount Value="34"/>
<EditorIndex Value="4"/>
<UsageCount Value="35"/>
<Loaded Value="True"/>
</Unit42>
<Unit43>
@ -354,7 +352,7 @@
<UnitName Value="base_xmlrpc_formatter"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="4"/>
<EditorIndex Value="5"/>
<UsageCount Value="16"/>
<Loaded Value="True"/>
</Unit43>
@ -381,8 +379,8 @@
<Filename Value="..\..\server_listener.pas"/>
<UnitName Value="server_listener"/>
<CursorPos X="3" Y="28"/>
<TopLine Value="14"/>
<EditorIndex Value="7"/>
<TopLine Value="21"/>
<EditorIndex Value="8"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit47>
@ -397,132 +395,29 @@
<UnitName Value="blcksock"/>
<CursorPos X="1" Y="2407"/>
<TopLine Value="2393"/>
<EditorIndex Value="12"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit49>
<Unit50>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\base\winunits\comobj.pp"/>
<UnitName Value="comobj"/>
<CursorPos X="14" Y="97"/>
<TopLine Value="114"/>
<UsageCount Value="10"/>
</Unit50>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<JumpHistory Count="3" HistoryIndex="2">
<Position1>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="302" Column="5" TopLine="270"/>
<Caret Line="92" Column="40" TopLine="81"/>
</Position1>
<Position2>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="308" Column="5" TopLine="276"/>
<Filename Value="tcp_server.pas"/>
<Caret Line="40" Column="33" TopLine="29"/>
</Position2>
<Position3>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="287" Column="54" TopLine="267"/>
<Filename Value="..\..\server_service_soap.pas"/>
<Caret Line="32" Column="42" TopLine="16"/>
</Position3>
<Position4>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="75" Column="1" TopLine="62"/>
</Position4>
<Position5>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="79" Column="1" TopLine="76"/>
</Position5>
<Position6>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="46" Column="17" TopLine="32"/>
</Position6>
<Position7>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="205" Column="104" TopLine="191"/>
</Position7>
<Position8>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="254" Column="35" TopLine="240"/>
</Position8>
<Position9>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="61" Column="24" TopLine="47"/>
</Position9>
<Position10>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="226" Column="19" TopLine="221"/>
</Position10>
<Position11>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="256" Column="56" TopLine="242"/>
</Position11>
<Position12>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="263" Column="1" TopLine="247"/>
</Position12>
<Position13>
<Filename Value="tcp_server.pas"/>
<Caret Line="30" Column="17" TopLine="15"/>
</Position13>
<Position14>
<Filename Value="tcp_server.pas"/>
<Caret Line="39" Column="1" TopLine="25"/>
</Position14>
<Position15>
<Filename Value="tcp_server.pas"/>
<Caret Line="51" Column="11" TopLine="28"/>
</Position15>
<Position16>
<Filename Value="tcp_server.pas"/>
<Caret Line="30" Column="26" TopLine="28"/>
</Position16>
<Position17>
<Filename Value="tcp_server.pas"/>
<Caret Line="52" Column="31" TopLine="28"/>
</Position17>
<Position18>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="300" Column="1" TopLine="266"/>
</Position18>
<Position19>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="81" Column="41" TopLine="63"/>
</Position19>
<Position20>
<Filename Value="tcp_server.pas"/>
<Caret Line="52" Column="40" TopLine="28"/>
</Position20>
<Position21>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="81" Column="50" TopLine="65"/>
</Position21>
<Position22>
<Filename Value="tcp_server.pas"/>
<Caret Line="52" Column="40" TopLine="28"/>
</Position22>
<Position23>
<Filename Value="tcp_server.pas"/>
<Caret Line="53" Column="16" TopLine="29"/>
</Position23>
<Position24>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="315" Column="5" TopLine="283"/>
</Position24>
<Position25>
<Filename Value="tcp_server.pas"/>
<Caret Line="37" Column="19" TopLine="29"/>
</Position25>
<Position26>
<Filename Value="tcp_server.pas"/>
<Caret Line="52" Column="21" TopLine="29"/>
</Position26>
<Position27>
<Filename Value="..\..\synapse_tcp_server.pas"/>
<Caret Line="267" Column="24" TopLine="247"/>
</Position27>
<Position28>
<Filename Value="tcp_server.pas"/>
<Caret Line="52" Column="27" TopLine="29"/>
</Position28>
<Position29>
<Filename Value="tcp_server.pas"/>
<Caret Line="53" Column="1" TopLine="29"/>
</Position29>
<Position30>
<Filename Value="..\user_service_intf_imp.pas"/>
<Caret Line="56" Column="1" TopLine="40"/>
</Position30>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>

View File

@ -2,7 +2,7 @@
This unit has been produced by ws_helper.
Input unit name : "user_service_intf".
This unit name : "user_service_intf_binder".
Date : "13/07/2007 21:34:10".
Date : "16/07/2007 19:01:46".
}
unit user_service_intf_binder;
{$IFDEF FPC} {$mode objfpc}{$H+} {$ENDIF}
@ -284,10 +284,10 @@ End;
initialization
{$IF DECLARED(Register_user_service_intf_NameSpace)}
Register_user_service_intf_NameSpace();
{$IFEND}
{$i user_service_intf.wst}
{$IF DECLARED(Register_user_service_intf_ServiceMetadata)}
Register_user_service_intf_ServiceMetadata();
{$IFEND}
End.

View File

@ -18,7 +18,11 @@ Type
{ TUserService_ServiceImp }
TUserService_ServiceImp=class(TBaseServiceImplementation,UserService)
TUserService_ServiceImp=class(TActivableServiceImplementation,UserService)
protected
procedure Activate();override;
procedure Deactivate();override;
function CanBePooled() : Boolean;override;
Protected
function GetList():TUserArray;
procedure Add(
@ -33,6 +37,9 @@ Type
function Delete(
Const AName : string
):boolean;
public
constructor Create();override;
destructor Destroy();override;
End;
const sDATA_FILE_NAME = 'sample.data';
@ -41,7 +48,7 @@ Type
procedure SaveDataToFile(const AFileName : string);
Implementation
uses Contnrs, std_cursors, rtti_filters, imp_helper;
uses Contnrs, std_cursors, rtti_filters, imp_helper, config_objects;
var
FUserList : TObjectList = nil;
@ -67,9 +74,6 @@ end;
{ TUserService_ServiceImp implementation }
function TUserService_ServiceImp.GetList():TUserArray;
var
locCrs : IObjectCursor;
srcUsr, locUsr : TUser;
Begin
Result := TUserArray.Create();
try
@ -135,7 +139,7 @@ End;
procedure RegisterUserServiceImplementationFactory();
Begin
GetServiceImplementationRegistry().Register('UserService',TImplementationFactory.Create(TUserService_ServiceImp) as IServiceImplementationFactory);
GetServiceImplementationRegistry().Register('UserService',TImplementationFactory.Create(TUserService_ServiceImp,wst_GetServiceConfigText('UserService')) as IServiceImplementationFactory);
End;
procedure FillSampleData();
@ -186,6 +190,35 @@ begin
end;
end;
constructor TUserService_ServiceImp.Create;
begin
inherited;
WriteLn('TUserService_ServiceImp.Create();');
end;
procedure TUserService_ServiceImp.Activate;
begin
inherited;
WriteLn(Format('TUserService_ServiceImp.Activate(), Self = %p',[Pointer(Self)]));
end;
function TUserService_ServiceImp.CanBePooled: Boolean;
begin
Result := True;
end;
procedure TUserService_ServiceImp.Deactivate;
begin
WriteLn(Format('TUserService_ServiceImp.Deactivate(), Self = %p',[Pointer(Self)]));
inherited;
end;
destructor TUserService_ServiceImp.Destroy;
begin
WriteLn('TUserService_ServiceImp.Destroy();');
inherited;
end;
initialization
FUserList := TObjectList.Create(True);
FUserCursor := TObjectListCursor.Create(FUserList);

View File

@ -21,6 +21,11 @@ uses
{$INCLUDE wst.inc}
{$INCLUDE wst_delphi.inc}
const
sSEPARATOR = '/';
sSERVICES_PREFIXE = 'services';
sWSDL = 'WSDL';
type
TListnerNotifyMessage = procedure(Sender : TObject; const AMsg : string) of object;
@ -36,8 +41,45 @@ type
property OnNotifyMessage : TListnerNotifyMessage read FOnNotifyMessage write FOnNotifyMessage;
end;
function GenerateWSDLHtmlTable(): string;
implementation
uses base_service_intf, metadata_repository,
metadata_service, metadata_service_binder, metadata_service_imp ;
function GenerateWSDLHtmlTable(): string;
var
r : IModuleMetadataMngr;
i : Integer;
begin
r := GetModuleMetadataMngr();
Result := '<html>' +
'<head>'+
'<title>'+
'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%">';
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>' +
'</tr>';
end;
Result := Result +
'</table>'+
'</body>'+
'</head>'+
'</html>';
end;
{ TwstListener }
@ -52,4 +94,9 @@ begin
FOnNotifyMessage(Self,AMsg);
end;
initialization
RegisterStdTypes();
RegisterWSTMetadataServiceImplementationFactory();
Server_service_RegisterWSTMetadataServiceService();
end.

View File

@ -82,14 +82,16 @@ Type
);
end;
IServerServiceRegistry = Interface
IServerServiceRegistry = interface
['{83E7BBEB-A33D-4A3E-896D-D351C2819009}']
function Find(const AServiceName : string):IServerService;
procedure Register(
const AServiceName : string;
AFactory : IItemFactory
);
End;
function GetCount() : Integer;
function GetName(const AIndex : Integer) : string;
end;
IServiceImplementationFactory = interface(IItemFactoryEx)
['{23A745BC-5F63-404D-BF53-55A6E64DE5BE}']
@ -277,7 +279,9 @@ type
TServerServiceRegistry = class(TBaseFactoryRegistry,IServerServiceRegistry)
protected
function Find(const AServiceName : string):IServerService;
End;
function GetCount() : Integer;
function GetName(const AIndex : Integer) : string;
end;
{ TBaseFormatterRegistryItem }
@ -390,6 +394,16 @@ Type
property VerbHandler : TServiceVerbMethod Read FVerbHandler;
End;
function TServerServiceRegistry.GetCount: Integer;
begin
Result := Count;
end;
function TServerServiceRegistry.GetName(const AIndex: Integer): string;
begin
Result := Item[AIndex].Name;
end;
{ TServiceVerbItem }
constructor TServiceVerbItem.Create(

View File

@ -177,7 +177,7 @@ begin
AssertNotNull('params pointer',po^.Params);
pop := po^.Params;
AssertEquals('param name','result',pop^.Name);
AssertEquals('param type name','int',pop^.TypeName);
AssertEquals('param type name','integer',pop^.TypeName);
AssertEquals('param modifier',ord(argOut),ord(pop^.Modifier));
rp^.NameSpace := 'http://test_name_space/';

View File

@ -7,7 +7,7 @@
<MainUnit Value="0"/>
<IconPath Value="./"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="13"/>
<ActiveEditorIndexAtStart Value="14"/>
</General>
<PublishOptions>
<Version Value="2"/>
@ -141,16 +141,18 @@
<Filename Value="testmetadata_unit.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="testmetadata_unit"/>
<CursorPos X="44" Y="180"/>
<TopLine Value="153"/>
<CursorPos X="48" Y="180"/>
<TopLine Value="158"/>
<EditorIndex Value="14"/>
<UsageCount Value="202"/>
<Loaded Value="True"/>
</Unit11>
<Unit12>
<Filename Value="..\..\ws_helper\metadata_generator.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="metadata_generator"/>
<CursorPos X="1" Y="19"/>
<TopLine Value="1"/>
<TopLine Value="67"/>
<EditorIndex Value="10"/>
<UsageCount Value="202"/>
<Loaded Value="True"/>
@ -285,7 +287,7 @@
<UnitName Value="test_parserdef"/>
<CursorPos X="93" Y="76"/>
<TopLine Value="11"/>
<UsageCount Value="144"/>
<UsageCount Value="145"/>
</Unit30>
<Unit31>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\inc\objpash.inc"/>
@ -328,7 +330,7 @@
<CursorPos X="26" Y="13"/>
<TopLine Value="1"/>
<EditorIndex Value="7"/>
<UsageCount Value="82"/>
<UsageCount Value="83"/>
<Loaded Value="True"/>
</Unit36>
<Unit37>
@ -454,7 +456,7 @@
<CursorPos X="8" Y="38"/>
<TopLine Value="11"/>
<EditorIndex Value="3"/>
<UsageCount Value="28"/>
<UsageCount Value="29"/>
<Loaded Value="True"/>
</Unit54>
<Unit55>

View File

@ -7,7 +7,7 @@
<MainUnit Value="0"/>
<IconPath Value="./"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="0"/>
<ActiveEditorIndexAtStart Value="2"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
@ -36,10 +36,10 @@
<Unit0>
<Filename Value="typ_lib_edtr.lpr"/>
<IsPartOfProject Value="True"/>
<CursorPos X="20" Y="5"/>
<CursorPos X="1" Y="20"/>
<TopLine Value="1"/>
<EditorIndex Value="2"/>
<UsageCount Value="191"/>
<UsageCount Value="198"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
@ -49,10 +49,10 @@
<IsPartOfProject Value="True"/>
<ResourceFilename Value="uwsttypelibraryedit.lrs"/>
<UnitName Value="uwsttypelibraryedit"/>
<CursorPos X="19" Y="552"/>
<CursorPos X="40" Y="546"/>
<TopLine Value="535"/>
<EditorIndex Value="0"/>
<UsageCount Value="191"/>
<UsageCount Value="198"/>
<Loaded Value="True"/>
</Unit1>
<Unit2>
@ -60,7 +60,7 @@
<UnitName Value="parserdefs"/>
<CursorPos X="1" Y="35"/>
<TopLine Value="22"/>
<UsageCount Value="43"/>
<UsageCount Value="42"/>
</Unit2>
<Unit3>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
@ -68,7 +68,7 @@
<CursorPos X="38" Y="805"/>
<TopLine Value="792"/>
<EditorIndex Value="9"/>
<UsageCount Value="80"/>
<UsageCount Value="83"/>
<Bookmarks Count="1">
<Item0 X="65" Y="750" ID="2"/>
</Bookmarks>
@ -81,7 +81,7 @@
<CursorPos X="45" Y="707"/>
<TopLine Value="684"/>
<EditorIndex Value="13"/>
<UsageCount Value="191"/>
<UsageCount Value="198"/>
<Bookmarks Count="1">
<Item0 X="49" Y="446" ID="1"/>
</Bookmarks>
@ -96,7 +96,7 @@
<UnitName Value="uabout"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="191"/>
<UsageCount Value="198"/>
</Unit5>
<Unit6>
<Filename Value="ufenumedit.pas"/>
@ -108,7 +108,7 @@
<CursorPos X="27" Y="78"/>
<TopLine Value="58"/>
<EditorIndex Value="10"/>
<UsageCount Value="191"/>
<UsageCount Value="198"/>
<Loaded Value="True"/>
</Unit6>
<Unit7>
@ -118,7 +118,7 @@
<CursorPos X="1" Y="241"/>
<TopLine Value="234"/>
<EditorIndex Value="8"/>
<UsageCount Value="191"/>
<UsageCount Value="198"/>
<Loaded Value="True"/>
</Unit7>
<Unit8>
@ -127,7 +127,7 @@
<UnitName Value="source_utils"/>
<CursorPos X="18" Y="20"/>
<TopLine Value="1"/>
<UsageCount Value="191"/>
<UsageCount Value="198"/>
</Unit8>
<Unit9>
<Filename Value="edit_helper.pas"/>
@ -136,7 +136,7 @@
<CursorPos X="15" Y="491"/>
<TopLine Value="484"/>
<EditorIndex Value="1"/>
<UsageCount Value="191"/>
<UsageCount Value="198"/>
<Loaded Value="True"/>
</Unit9>
<Unit10>
@ -149,7 +149,7 @@
<CursorPos X="1" Y="307"/>
<TopLine Value="294"/>
<EditorIndex Value="3"/>
<UsageCount Value="191"/>
<UsageCount Value="198"/>
<Loaded Value="True"/>
</Unit10>
<Unit11>
@ -161,7 +161,7 @@
<CursorPos X="33" Y="106"/>
<TopLine Value="92"/>
<EditorIndex Value="5"/>
<UsageCount Value="191"/>
<UsageCount Value="198"/>
<Loaded Value="True"/>
</Unit11>
<Unit12>
@ -169,7 +169,7 @@
<UnitName Value="ComCtrls"/>
<CursorPos X="15" Y="1781"/>
<TopLine Value="1768"/>
<UsageCount Value="2"/>
<UsageCount Value="1"/>
</Unit12>
<Unit13>
<Filename Value="..\ws_helper\parserutils.pas"/>
@ -177,83 +177,83 @@
<CursorPos X="17" Y="20"/>
<TopLine Value="19"/>
<EditorIndex Value="4"/>
<UsageCount Value="67"/>
<UsageCount Value="70"/>
<Loaded Value="True"/>
</Unit13>
<Unit14>
<Filename Value="..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\i386\i386.inc"/>
<CursorPos X="2" Y="1284"/>
<TopLine Value="1263"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit14>
<Unit15>
<Filename Value="..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\inc\except.inc"/>
<CursorPos X="1" Y="223"/>
<TopLine Value="209"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit15>
<Unit16>
<Filename Value="..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\inc\objpas.inc"/>
<CursorPos X="1" Y="152"/>
<TopLine Value="138"/>
<UsageCount Value="11"/>
<UsageCount Value="10"/>
</Unit16>
<Unit17>
<Filename Value="ufclassedit.lrs"/>
<CursorPos X="39" Y="2"/>
<TopLine Value="1"/>
<UsageCount Value="2"/>
<UsageCount Value="1"/>
</Unit17>
<Unit18>
<Filename Value="..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\inc\wstrings.inc"/>
<CursorPos X="1" Y="317"/>
<TopLine Value="303"/>
<UsageCount Value="2"/>
<UsageCount Value="1"/>
</Unit18>
<Unit19>
<Filename Value="..\..\..\..\lazarus23_213\fpc\2.1.3\source\packages\fcl-xml\src\dom.pp"/>
<UnitName Value="DOM"/>
<CursorPos X="3" Y="2064"/>
<TopLine Value="2041"/>
<UsageCount Value="2"/>
<UsageCount Value="1"/>
</Unit19>
<Unit20>
<Filename Value="..\..\..\..\lazarus23_213\lcl\stdctrls.pp"/>
<UnitName Value="StdCtrls"/>
<CursorPos X="24" Y="362"/>
<TopLine Value="348"/>
<UsageCount Value="1"/>
<UsageCount Value="0"/>
</Unit20>
<Unit21>
<Filename Value="..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\classes\classesh.inc"/>
<CursorPos X="12" Y="64"/>
<TopLine Value="49"/>
<UsageCount Value="1"/>
<UsageCount Value="0"/>
</Unit21>
<Unit22>
<Filename Value="..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\classes\stringl.inc"/>
<CursorPos X="15" Y="1071"/>
<TopLine Value="1056"/>
<UsageCount Value="1"/>
<UsageCount Value="0"/>
</Unit22>
<Unit23>
<Filename Value="..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\types.pp"/>
<UnitName Value="types"/>
<CursorPos X="6" Y="15"/>
<TopLine Value="1"/>
<UsageCount Value="1"/>
<UsageCount Value="0"/>
</Unit23>
<Unit24>
<Filename Value="..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\sysutils\sysstrh.inc"/>
<CursorPos X="10" Y="104"/>
<TopLine Value="90"/>
<UsageCount Value="1"/>
<UsageCount Value="0"/>
</Unit24>
<Unit25>
<Filename Value="..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\objpas\sysutils\sysstr.inc"/>
<CursorPos X="1" Y="689"/>
<TopLine Value="686"/>
<UsageCount Value="1"/>
<UsageCount Value="0"/>
</Unit25>
<Unit26>
<Filename Value="uinterfaceedit.pas"/>
@ -263,13 +263,13 @@
<UnitName Value="uinterfaceedit"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="155"/>
<UsageCount Value="162"/>
</Unit26>
<Unit27>
<Filename Value="uinterfaceedit.lfm"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="1"/>
<UsageCount Value="0"/>
<SyntaxHighlighter Value="LFM"/>
</Unit27>
<Unit28>
@ -280,13 +280,13 @@
<UnitName Value="udm"/>
<CursorPos X="15" Y="2"/>
<TopLine Value="1"/>
<UsageCount Value="150"/>
<UsageCount Value="157"/>
</Unit28>
<Unit29>
<Filename Value="..\..\..\..\lazarus23_213\lcl\include\treeview.inc"/>
<CursorPos X="25" Y="68"/>
<TopLine Value="61"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit29>
<Unit30>
<Filename Value="..\ws_helper\pascal_parser_intf.pas"/>
@ -295,7 +295,7 @@
<CursorPos X="24" Y="13"/>
<TopLine Value="1"/>
<EditorIndex Value="12"/>
<UsageCount Value="113"/>
<UsageCount Value="120"/>
<Loaded Value="True"/>
</Unit30>
<Unit31>
@ -304,14 +304,14 @@
<UnitName Value="PParser"/>
<CursorPos X="4" Y="2133"/>
<TopLine Value="2127"/>
<UsageCount Value="113"/>
<UsageCount Value="120"/>
</Unit31>
<Unit32>
<Filename Value="..\ws_helper\logger_intf.pas"/>
<UnitName Value="logger_intf"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="37"/>
<UsageCount Value="37"/>
<UsageCount Value="36"/>
</Unit32>
<Unit33>
<Filename Value="..\ws_helper\pastree.pp"/>
@ -319,40 +319,41 @@
<UnitName Value="PasTree"/>
<CursorPos X="33" Y="332"/>
<TopLine Value="315"/>
<UsageCount Value="113"/>
<UsageCount Value="120"/>
</Unit33>
<Unit34>
<Filename Value="..\..\..\..\lazarus_23_215\lcl\include\treeview.inc"/>
<CursorPos X="35" Y="71"/>
<TopLine Value="58"/>
<UsageCount Value="5"/>
<UsageCount Value="4"/>
</Unit34>
<Unit35>
<Filename Value="..\..\..\..\lazarus23_213\lcl\include\customcheckbox.inc"/>
<CursorPos X="1" Y="120"/>
<TopLine Value="108"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit35>
<Unit36>
<Filename Value="umain.lrs"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit36>
<Unit37>
<Filename Value="..\wst_rtti_filter\rtti_filters.pas"/>
<UnitName Value="rtti_filters"/>
<CursorPos X="1" Y="236"/>
<TopLine Value="219"/>
<UsageCount Value="27"/>
<UsageCount Value="26"/>
</Unit37>
<Unit38>
<Filename Value="..\ws_helper\generator.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="generator"/>
<CursorPos X="2" Y="16"/>
<TopLine Value="1"/>
<CursorPos X="223" Y="1327"/>
<TopLine Value="1318"/>
<EditorIndex Value="7"/>
<UsageCount Value="30"/>
<UsageCount Value="37"/>
<Loaded Value="True"/>
</Unit38>
<Unit39>
@ -360,49 +361,49 @@
<UnitName Value="dom_cursors"/>
<CursorPos X="1" Y="239"/>
<TopLine Value="222"/>
<UsageCount Value="24"/>
<UsageCount Value="23"/>
</Unit39>
<Unit40>
<Filename Value="..\ws_helper\command_line_parser.pas"/>
<UnitName Value="command_line_parser"/>
<CursorPos X="20" Y="31"/>
<TopLine Value="17"/>
<UsageCount Value="22"/>
<UsageCount Value="21"/>
</Unit40>
<Unit41>
<Filename Value="..\..\..\..\..\lazarus_23_215\lcl\forms.pp"/>
<UnitName Value="Forms"/>
<CursorPos X="44" Y="10"/>
<TopLine Value="1"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit41>
<Unit42>
<Filename Value="..\ws_helper\pscanner.pp"/>
<UnitName Value="PScanner"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="322"/>
<UsageCount Value="11"/>
<UsageCount Value="10"/>
</Unit42>
<Unit43>
<Filename Value="..\ws_helper\metadata_generator.pas"/>
<UnitName Value="metadata_generator"/>
<CursorPos X="11" Y="20"/>
<TopLine Value="14"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit43>
<Unit44>
<Filename Value="..\ide\lazarus\wst_register.pas"/>
<UnitName Value="wst_register"/>
<CursorPos X="42" Y="6"/>
<TopLine Value="1"/>
<UsageCount Value="12"/>
<UsageCount Value="11"/>
</Unit44>
<Unit45>
<Filename Value="..\..\..\..\..\lazarus_23_215\ideintf\menuintf.pas"/>
<UnitName Value="MenuIntf"/>
<CursorPos X="53" Y="417"/>
<TopLine Value="409"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit45>
<Unit46>
<Filename Value="..\ide\lazarus\wstimportdlg.pas"/>
@ -411,28 +412,28 @@
<UnitName Value="wstimportdlg"/>
<CursorPos X="29" Y="60"/>
<TopLine Value="154"/>
<UsageCount Value="12"/>
<UsageCount Value="11"/>
</Unit46>
<Unit47>
<Filename Value="..\..\..\..\..\lazarus_23_215\ideintf\lazideintf.pas"/>
<UnitName Value="LazIDEIntf"/>
<CursorPos X="33" Y="174"/>
<TopLine Value="162"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit47>
<Unit48>
<Filename Value="..\..\..\..\..\lazarus_23_215\ideintf\projectintf.pas"/>
<UnitName Value="ProjectIntf"/>
<CursorPos X="3" Y="284"/>
<TopLine Value="262"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit48>
<Unit49>
<Filename Value="..\..\..\..\..\lazarus_23_215\ideintf\idecommands.pas"/>
<UnitName Value="IDECommands"/>
<CursorPos X="47" Y="291"/>
<TopLine Value="279"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit49>
<Unit50>
<Filename Value="uprocedit.pas"/>
@ -442,14 +443,14 @@
<UnitName Value="uprocedit"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="69"/>
<UsageCount Value="76"/>
</Unit50>
<Unit51>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\comctrls.pp"/>
<UnitName Value="ComCtrls"/>
<CursorPos X="4" Y="1660"/>
<TopLine Value="1660"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit51>
<Unit52>
<Filename Value="common_gui_utils.pas"/>
@ -457,14 +458,14 @@
<UnitName Value="common_gui_utils"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="67"/>
<UsageCount Value="74"/>
</Unit52>
<Unit53>
<Filename Value="..\..\..\..\..\DOCUME~1\ADMINI~1\LOCALS~1\Temp\DestBug.pas"/>
<UnitName Value="DestBug"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit53>
<Unit54>
<Filename Value="uargedit.pas"/>
@ -474,20 +475,20 @@
<UnitName Value="uargedit"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="60"/>
<UsageCount Value="67"/>
</Unit54>
<Unit55>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\interfaces\win32\win32wscontrols.pp"/>
<UnitName Value="Win32WSControls"/>
<CursorPos X="1" Y="226"/>
<TopLine Value="212"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit55>
<Unit56>
<Filename Value="umain.lfm"/>
<CursorPos X="19" Y="1822"/>
<TopLine Value="1858"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
<SyntaxHighlighter Value="LFM"/>
</Unit56>
<Unit57>
@ -498,14 +499,14 @@
<UnitName Value="umoduleedit"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="52"/>
<UsageCount Value="59"/>
</Unit57>
<Unit58>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\stdctrls.pp"/>
<UnitName Value="StdCtrls"/>
<CursorPos X="3" Y="1020"/>
<TopLine Value="1006"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit58>
<Unit59>
<Filename Value="ubindingedit.pas"/>
@ -515,38 +516,38 @@
<UnitName Value="ubindingedit"/>
<CursorPos X="2" Y="12"/>
<TopLine Value="1"/>
<UsageCount Value="42"/>
<UsageCount Value="49"/>
</Unit59>
<Unit60>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\objpash.inc"/>
<CursorPos X="26" Y="158"/>
<TopLine Value="135"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit60>
<Unit61>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\objpas.inc"/>
<CursorPos X="11" Y="550"/>
<TopLine Value="645"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit61>
<Unit62>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\classes\classesh.inc"/>
<CursorPos X="14" Y="248"/>
<TopLine Value="226"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit62>
<Unit63>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\classes\lists.inc"/>
<CursorPos X="3" Y="408"/>
<TopLine Value="406"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit63>
<Unit64>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-base\src\inc\contnrs.pp"/>
<UnitName Value="contnrs"/>
<CursorPos X="3" Y="701"/>
<TopLine Value="698"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit64>
<Unit65>
<Filename Value="ufrmsaveoption.pas"/>
@ -556,21 +557,21 @@
<UnitName Value="ufrmsaveoption"/>
<CursorPos X="42" Y="64"/>
<TopLine Value="42"/>
<UsageCount Value="38"/>
<UsageCount Value="45"/>
</Unit65>
<Unit66>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\dialogs.pp"/>
<UnitName Value="Dialogs"/>
<CursorPos X="3" Y="44"/>
<TopLine Value="27"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit66>
<Unit67>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<UnitName Value="DOM"/>
<CursorPos X="3" Y="1459"/>
<TopLine Value="1455"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit67>
<Unit68>
<Filename Value="..\wst_rtti_filter\cursor_intf.pas"/>
@ -578,20 +579,20 @@
<CursorPos X="2" Y="90"/>
<TopLine Value="71"/>
<EditorIndex Value="11"/>
<UsageCount Value="13"/>
<UsageCount Value="16"/>
<Loaded Value="True"/>
</Unit68>
<Unit69>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\include\control.inc"/>
<CursorPos X="1" Y="2403"/>
<TopLine Value="2390"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit69>
<Unit70>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\include\customform.inc"/>
<CursorPos X="1" Y="1417"/>
<TopLine Value="1398"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit70>
<Unit71>
<Filename Value="ufarrayedit.pas"/>
@ -602,15 +603,43 @@
<CursorPos X="67" Y="117"/>
<TopLine Value="95"/>
<EditorIndex Value="6"/>
<UsageCount Value="22"/>
<UsageCount Value="29"/>
<Loaded Value="True"/>
</Unit71>
</Units>
<JumpHistory Count="1" HistoryIndex="0">
<JumpHistory Count="8" HistoryIndex="7">
<Position1>
<Filename Value="typ_lib_edtr.lpr"/>
<Caret Line="17" Column="43" TopLine="1"/>
<Filename Value="..\ws_helper\generator.pas"/>
<Caret Line="699" Column="64" TopLine="684"/>
</Position1>
<Position2>
<Filename Value="..\ws_helper\generator.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position2>
<Position3>
<Filename Value="..\ws_helper\generator.pas"/>
<Caret Line="692" Column="27" TopLine="684"/>
</Position3>
<Position4>
<Filename Value="..\ws_helper\generator.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position4>
<Position5>
<Filename Value="typ_lib_edtr.lpr"/>
<Caret Line="5" Column="20" TopLine="1"/>
</Position5>
<Position6>
<Filename Value="typ_lib_edtr.lpr"/>
<Caret Line="15" Column="14" TopLine="1"/>
</Position6>
<Position7>
<Filename Value="typ_lib_edtr.lpr"/>
<Caret Line="14" Column="68" TopLine="1"/>
</Position7>
<Position8>
<Filename Value="typ_lib_edtr.lpr"/>
<Caret Line="20" Column="1" TopLine="1"/>
</Position8>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>

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, ufarrayedit;
umoduleedit, ubindingedit, ufrmsaveoption, ufarrayedit, generator;
begin
Application.Initialize;

View File

@ -688,13 +688,13 @@ begin
NewLine();
WriteLn('initialization');
NewLine();
s := Format('Register_%s_NameSpace',[SymbolTable.CurrentModule.Name]);
WriteLn(' {$i %s.%s}',[SymbolTable.CurrentModule.Name,sWST_EXTENSION]);
NewLine();
s := Format('Register_%s_ServiceMetadata',[SymbolTable.CurrentModule.Name]);
WriteLn(' {$IF DECLARED(%s)}',[s]);
WriteLn(' %s();',[s]);
WriteLn(' {$IFEND}');
NewLine();
WriteLn(' {$i %s.%s}',[SymbolTable.CurrentModule.Name,sWST_EXTENSION]);
NewLine();
WriteLn('End.');
end;
@ -1142,6 +1142,7 @@ begin
SetCurrentStream(FImpStream);
WriteLn('');
WriteLn('Implementation');
WriteLn('uses config_objects;');
end;
procedure TImplementationGenerator.GenerateUnitImplementationFooter();
@ -1323,7 +1324,7 @@ var
WriteLn('procedure Register%sImplementationFactory();',[strBuff]);
WriteLn('Begin');
IncIndent();
WriteLn('GetServiceImplementationRegistry().Register(%s,TImplementationFactory.Create(%s) as IServiceImplementationFactory);',[QuotedStr(AIntf.Name),strClassName]);
WriteLn('GetServiceImplementationRegistry().Register(%s,TImplementationFactory.Create(%s,wst_GetServiceConfigText(%s)) as IServiceImplementationFactory);',[QuotedStr(AIntf.Name),strClassName,QuotedStr(AIntf.Name)]);
DecIndent();
WriteLn('End;');
EndAutoIndent();

View File

@ -2,7 +2,7 @@
type
QWord = type Int64;
DWORD = LongWord;
PtrInt = Cardinal;
PtrInt = Integer;
PByteArray = ^ByteArray;
ByteArray = array[0..$effffff] of Byte;
PtrUInt = Cardinal;

View File

@ -97,7 +97,6 @@ end;
function NodeToBuffer(ANode : TDOMNode):string ;
var
locStream : TStringStream;
locNodeEx : IDOMNodeEx;
begin
if Supports(ANode,IDOMNodeEx,locNodeEx) then begin