2007-05-02 22:55:35 +00:00
|
|
|
{
|
|
|
|
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.
|
|
|
|
}
|
|
|
|
program tcp_server;
|
|
|
|
|
|
|
|
{$INCLUDE wst.inc}
|
2011-08-08 02:26:00 +00:00
|
|
|
{ $DEFINE WST_BLOCK_TYPE}
|
2007-05-02 22:55:35 +00:00
|
|
|
uses
|
2007-05-06 19:31:24 +00:00
|
|
|
{$IFDEF FPC}
|
|
|
|
{$IFDEF UNIX}
|
|
|
|
{$DEFINE UseCThreads}
|
|
|
|
{$ENDIF}
|
|
|
|
{$IFDEF UNIX}{$IFDEF UseCThreads}
|
|
|
|
cthreads,
|
|
|
|
{$ENDIF}{$ENDIF}
|
|
|
|
{$ENDIF}
|
2007-05-02 22:55:35 +00:00
|
|
|
Classes, SysUtils,
|
2007-12-29 00:58:19 +00:00
|
|
|
base_service_intf, server_service_soap, server_service_json,
|
2007-05-02 22:55:35 +00:00
|
|
|
base_binary_formatter, server_binary_formatter,
|
|
|
|
metadata_service, metadata_service_imp, metadata_service_binder,
|
2009-05-25 16:13:54 +00:00
|
|
|
server_listener ,
|
2011-08-06 17:01:02 +00:00
|
|
|
fpc_tcp_server,
|
2009-05-25 16:13:54 +00:00
|
|
|
//synapse_tcp_server,
|
2011-08-08 02:26:00 +00:00
|
|
|
//indy_tcp_server,
|
2007-06-28 23:33:38 +00:00
|
|
|
user_service_intf, user_service_intf_binder, user_service_intf_imp , imp_helper,
|
|
|
|
server_service_xmlrpc;
|
2007-05-02 22:55:35 +00:00
|
|
|
|
2011-08-08 02:26:00 +00:00
|
|
|
{$IFDEF WST_BLOCK_TYPE}
|
|
|
|
type
|
|
|
|
|
|
|
|
{ TSampleBlockHandler }
|
2007-05-02 22:55:35 +00:00
|
|
|
|
2011-08-08 02:26:00 +00:00
|
|
|
TSampleBlockHandler = class(TInterfacedObject,IBlockHandler)
|
|
|
|
protected
|
|
|
|
procedure Execute(
|
|
|
|
const ABlockType : LongInt;
|
|
|
|
ARequestBlock,
|
|
|
|
AResponseBlock : TStream
|
|
|
|
);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TSampleBlockHandler.Execute(const ABlockType : LongInt;
|
|
|
|
ARequestBlock, AResponseBlock : TStream);
|
|
|
|
var
|
|
|
|
fs : TMemoryStream;
|
|
|
|
begin
|
|
|
|
WriteLn('Block Type = ',ABlockType);
|
|
|
|
fs := TMemoryStream.Create();
|
|
|
|
try
|
|
|
|
fs.CopyFrom(ARequestBlock,0);
|
|
|
|
fs.SaveToFile(ExpandFileName('.'+PathDelim+'request.log'));
|
|
|
|
finally
|
|
|
|
fs.Free();
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
{$ENDIF WST_BLOCK_TYPE}
|
|
|
|
|
2007-05-02 22:55:35 +00:00
|
|
|
var
|
2007-07-14 23:17:03 +00:00
|
|
|
listener : TwstListener;
|
2011-08-08 02:26:00 +00:00
|
|
|
{$IFDEF WST_BLOCK_TYPE}
|
|
|
|
blockHandler : IBlockHandler;
|
|
|
|
{$ENDIF WST_BLOCK_TYPE}
|
2007-05-02 22:55:35 +00:00
|
|
|
begin
|
|
|
|
Server_service_RegisterBinaryFormat();
|
2007-07-14 23:17:03 +00:00
|
|
|
Server_service_RegisterSoapFormat();
|
2007-06-28 23:33:38 +00:00
|
|
|
Server_service_RegisterXmlRpcFormat();
|
2007-12-29 00:58:19 +00:00
|
|
|
Server_service_RegisterJsonFormat();
|
2007-06-28 23:33:38 +00:00
|
|
|
|
|
|
|
RegisterWSTMetadataServiceImplementationFactory();
|
|
|
|
//Server_service_RegisterWSTMetadataServiceService();
|
2007-05-02 22:55:35 +00:00
|
|
|
RegisterWSTMetadataServiceImplementationFactory();
|
|
|
|
|
|
|
|
RegisterUserServiceImplementationFactory();
|
2007-06-28 23:33:38 +00:00
|
|
|
Server_service_RegisterUserServiceService();
|
2007-05-02 22:55:35 +00:00
|
|
|
|
2007-07-14 23:17:03 +00:00
|
|
|
WriteLn(Format('WST sample TCP Server listning on "%d"',[sSERVER_PORT]));
|
|
|
|
WriteLn('Hit <enter> to stop.');
|
2009-05-25 16:13:54 +00:00
|
|
|
//listener := TwstSynapseTcpListener.Create();
|
2011-08-06 17:01:02 +00:00
|
|
|
//listener := TwstIndyTcpListener.Create();
|
|
|
|
listener := TwstFPCTcpListener.Create();
|
2011-08-08 02:26:00 +00:00
|
|
|
{$IFDEF WST_BLOCK_TYPE}
|
|
|
|
blockHandler := TSampleBlockHandler.Create() as IBlockHandler;
|
|
|
|
TwstBaseTcpListener(listener).UnknownBlockHandler := blockHandler;
|
|
|
|
TwstBaseTcpListener(listener).Options := [tloHandleBlockType];
|
|
|
|
{$ENDIF WST_BLOCK_TYPE}
|
2007-07-14 23:17:03 +00:00
|
|
|
listener.Start();
|
2007-05-02 22:55:35 +00:00
|
|
|
ReadLn;
|
|
|
|
end.
|
|
|
|
|