- Recompilación en Delphi10 de todos los paquetes de RO para generar las DCU's en Lib\D10 - Recompilación en Delphi10 de todos los paquetes de DA para generar las DCU's en Lib\D10 git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@9 b6239004-a887-0f4b-9937-50029ccdca16
320 lines
12 KiB
ObjectPascal
320 lines
12 KiB
ObjectPascal
unit uRODataSnap_Intf;
|
|
|
|
interface
|
|
|
|
uses Classes, TypInfo, uROClient, uROTypes, uROClientIntf;
|
|
|
|
const
|
|
LibraryUID = '{9EC7C50C-DAC2-48A9-9A0F-CBAA29A11EF7}';
|
|
|
|
IAppServer_IID : TGUID = '{1AEFCC20-7A24-11D2-98B0-C69BEB4B5B6D}';
|
|
|
|
type
|
|
{ Forward declarations }
|
|
IAppServer = interface;
|
|
TProviderNames = class;
|
|
|
|
{ TProviderNames }
|
|
TProviderNames = class(TROArray)
|
|
private
|
|
fItems : array of string;
|
|
protected
|
|
function GetItems(Index : integer) : string;
|
|
procedure SetItems(Index : integer; const Value : string);
|
|
function GetCount : integer; override;
|
|
public
|
|
class function GetItemType : PTypeInfo; override;
|
|
class function GetItemSize : integer; override;
|
|
function GetItemRef(Index : integer) : pointer; override;
|
|
procedure Clear; override;
|
|
procedure Delete(Index : integer); override;
|
|
procedure Resize(ElementCount : integer); override;
|
|
|
|
procedure Assign(iSource:TPersistent); override;
|
|
function Add(const Value:string):integer;
|
|
|
|
property Count : integer read GetCount;
|
|
property Items[Index : integer] : string read GetItems write SetItems; default;
|
|
end;
|
|
|
|
{ IAppServer }
|
|
IAppServer = interface
|
|
['{1AEFCC20-7A24-11D2-98B0-C69BEB4B5B6D}']
|
|
function AS_ApplyUpdates(const ProviderName: WideString; const Delta: Binary; const MaxErrors: Integer; out ErrorCount: Integer; var OwnerData: String): binary;
|
|
function AS_GetRecords(const ProviderName: WideString; const Count: Integer; out RecsOut: Integer; const Options: Integer; const CommandText: WideString; var Params: Binary; var OwnerData: String): binary;
|
|
function AS_DataRequest(const ProviderName: WideString; const Data: Binary): binary;
|
|
function AS_GetProviderNames: TProviderNames;
|
|
function AS_GetParams(const ProviderName: WideString; var OwnerData: String): binary;
|
|
function AS_RowRequest(const ProviderName: WideString; const Row: Binary; const RequestType: Integer; var OwnerData: String): binary;
|
|
procedure AS_Execute(const ProviderName: WideString; const CommandText: WideString; var Params: Binary; var OwnerData: String);
|
|
end;
|
|
|
|
{ CoIAppServer }
|
|
CoAppServer = class
|
|
class function Create(const iAppServerName:string; const aMessage : IROMessage; aTransportChannel : IROTransportChannel) : IAppServer;
|
|
end;
|
|
|
|
TAppServer_Proxy = class(TROProxy, IAppServer)
|
|
private
|
|
fIAppServerName:string;
|
|
protected
|
|
constructor Create(const iAppServerName:string; const aMessage : IROMessage; const aTransportChannel : IROTransportChannel); reintroduce; overload;
|
|
constructor Create(const aMessage : IROMessage; const aTransportChannel : IROTransportChannel); reintroduce; overload;
|
|
// Internal
|
|
function __GetInterfaceName:string; override;
|
|
|
|
// IAppServer
|
|
function AS_ApplyUpdates(const ProviderName: WideString; const Delta: Binary; const MaxErrors: Integer; out ErrorCount: Integer; var OwnerData: String): binary; virtual;
|
|
function AS_GetRecords(const ProviderName: WideString; const Count: Integer; out RecsOut: Integer; const Options: Integer; const CommandText: WideString; var Params: Binary; var OwnerData: String): binary; virtual;
|
|
function AS_DataRequest(const ProviderName: WideString; const Data: Binary): binary; virtual;
|
|
function AS_GetProviderNames: TProviderNames; virtual;
|
|
function AS_GetParams(const ProviderName: WideString; var OwnerData: String): binary; virtual;
|
|
function AS_RowRequest(const ProviderName: WideString; const Row: Binary; const RequestType: Integer; var OwnerData: String): binary; virtual;
|
|
procedure AS_Execute(const ProviderName: WideString; const CommandText: WideString; var Params: Binary; var OwnerData: String); virtual;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
{vcl:} SysUtils,
|
|
{RemObjects:} uRORes, uROClasses;
|
|
|
|
{ TProviderNames }
|
|
|
|
procedure TProviderNames.Assign(iSource:TPersistent);
|
|
var lSource:TProviderNames;
|
|
i:integer;
|
|
begin
|
|
if (iSource is TProviderNames) then begin
|
|
lSource := TProviderNames(iSource);
|
|
Clear();
|
|
Resize(lSource.Count);
|
|
for i := 0 to Count-1 do begin
|
|
Items[i] := lSource.Items[i];
|
|
end;
|
|
end
|
|
else begin
|
|
inherited Assign(iSource);
|
|
end;
|
|
end;
|
|
|
|
class function TProviderNames.GetItemType : PTypeInfo;
|
|
begin
|
|
result := TypeInfo(string);
|
|
end;
|
|
|
|
class function TProviderNames.GetItemSize : integer;
|
|
begin
|
|
result := SizeOf(string);
|
|
end;
|
|
|
|
function TProviderNames.GetItems(Index : integer) : string;
|
|
begin
|
|
if (Index < 0) or (Index >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[Index]);
|
|
result := fItems[Index];
|
|
end;
|
|
|
|
function TProviderNames.GetItemRef(Index : integer) : pointer;
|
|
begin
|
|
result := @fItems[Index];
|
|
end;
|
|
|
|
procedure TProviderNames.Clear;
|
|
begin
|
|
SetLength(fItems, 0);
|
|
end;
|
|
|
|
procedure TProviderNames.Delete(Index : integer);
|
|
var i : integer;
|
|
begin
|
|
if (Index>=Count) then RaiseError(err_InvalidIndex, [Index]);
|
|
|
|
if (Index<Count-1) then
|
|
for i := Index to Count-1 do fItems[i] := fItems[i+1];
|
|
|
|
SetLength(fItems, Count-1)
|
|
end;
|
|
|
|
procedure TProviderNames.SetItems(Index : integer; const Value : string);
|
|
begin
|
|
fItems[Index] := Value;
|
|
end;
|
|
|
|
procedure TProviderNames.Resize(ElementCount : integer);
|
|
begin
|
|
SetLength(fItems, ElementCount);
|
|
end;
|
|
|
|
function TProviderNames.GetCount: integer;
|
|
begin
|
|
result := Length(fItems);
|
|
end;
|
|
|
|
function TProviderNames.Add(const Value:string):integer;
|
|
begin
|
|
SetLength(fItems, Length(fItems)+1);
|
|
result := Length(fItems)-1;
|
|
fItems[result] := Value;
|
|
end;
|
|
|
|
{ CoIAppServer }
|
|
|
|
class function CoAppServer.Create(const iAppServerName:string; const aMessage : IROMessage; aTransportChannel : IROTransportChannel) : IAppServer;
|
|
begin
|
|
result := TAppServer_Proxy.Create(iAppServerName, aMessage, aTransportChannel);
|
|
end;
|
|
|
|
{ TAppServer_Proxy }
|
|
|
|
constructor TAppServer_Proxy.Create(const iAppServerName: string; const aMessage : IROMessage; const aTransportChannel : IROTransportChannel);
|
|
begin
|
|
inherited Create(aMessage,aTransportChannel);
|
|
fIAppServerName := iAppServerName;
|
|
end;
|
|
|
|
constructor TAppServer_Proxy.Create(const aMessage : IROMessage; const aTransportChannel : IROTransportChannel);
|
|
begin
|
|
Create('', aMessage, aTransportChannel);
|
|
end;
|
|
|
|
function TAppServer_Proxy.__GetInterfaceName: string;
|
|
begin
|
|
result := fIAppServerName;
|
|
end;
|
|
|
|
function TAppServer_Proxy.AS_ApplyUpdates(const ProviderName: WideString; const Delta: Binary; const MaxErrors: Integer; out ErrorCount: Integer; var OwnerData: String): binary;
|
|
begin
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, '', fIAppServerName, 'AS_ApplyUpdates');
|
|
__Message.Write('ProviderName', TypeInfo(WideString), ProviderName, []);
|
|
__Message.Write('Delta', TypeInfo(Binary), Delta, []);
|
|
__Message.Write('MaxErrors', TypeInfo(Integer), MaxErrors, []);
|
|
__Message.Write('OwnerData', TypeInfo(String), OwnerData, []);
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('ErrorCount', TypeInfo(Integer), ErrorCount, []);
|
|
__Message.Read('OwnerData', TypeInfo(String), OwnerData, []);
|
|
__Message.Read('Result', TypeInfo(binary), result, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
function TAppServer_Proxy.AS_GetRecords(const ProviderName: WideString; const Count: Integer; out RecsOut: Integer; const Options: Integer; const CommandText: WideString; var Params: Binary; var OwnerData: String): binary;
|
|
begin
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, '', fIAppServerName, 'AS_GetRecords');
|
|
__Message.Write('ProviderName', TypeInfo(WideString), ProviderName, []);
|
|
__Message.Write('Count', TypeInfo(Integer), Count, []);
|
|
__Message.Write('Options', TypeInfo(Integer), Options, []);
|
|
__Message.Write('CommandText', TypeInfo(WideString), CommandText, []);
|
|
__Message.Write('Params', TypeInfo(Binary), Params, []);
|
|
__Message.Write('OwnerData', TypeInfo(String), OwnerData, []);
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('RecsOut', TypeInfo(Integer), RecsOut, []);
|
|
__Message.Read('Params', TypeInfo(Binary), Params, []);
|
|
__Message.Read('OwnerData', TypeInfo(String), OwnerData, []);
|
|
__Message.Read('Result', TypeInfo(binary), result, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
function TAppServer_Proxy.AS_DataRequest(const ProviderName: WideString; const Data: Binary): binary;
|
|
begin
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, '', fIAppServerName, 'AS_DataRequest');
|
|
__Message.Write('ProviderName', TypeInfo(WideString), ProviderName, []);
|
|
__Message.Write('Data', TypeInfo(Binary), Data, []);
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('Result', TypeInfo(binary), result, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
function TAppServer_Proxy.AS_GetProviderNames: TProviderNames;
|
|
begin
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, '', fIAppServerName, 'AS_GetProviderNames');
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('Result', TypeInfo(TProviderNames), result, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
function TAppServer_Proxy.AS_GetParams(const ProviderName: WideString; var OwnerData: String): binary;
|
|
begin
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, '', fIAppServerName, 'AS_GetParams');
|
|
__Message.Write('ProviderName', TypeInfo(WideString), ProviderName, []);
|
|
__Message.Write('OwnerData', TypeInfo(String), OwnerData, []);
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('OwnerData', TypeInfo(String), OwnerData, []);
|
|
__Message.Read('Result', TypeInfo(binary), result, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
function TAppServer_Proxy.AS_RowRequest(const ProviderName: WideString; const Row: Binary; const RequestType: Integer; var OwnerData: String): binary;
|
|
begin
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, '', fIAppServerName, 'AS_RowRequest');
|
|
__Message.Write('ProviderName', TypeInfo(WideString), ProviderName, []);
|
|
__Message.Write('Row', TypeInfo(Binary), Row, []);
|
|
__Message.Write('RequestType', TypeInfo(Integer), RequestType, []);
|
|
__Message.Write('OwnerData', TypeInfo(String), OwnerData, []);
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('OwnerData', TypeInfo(String), OwnerData, []);
|
|
__Message.Read('Result', TypeInfo(binary), result, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
procedure TAppServer_Proxy.AS_Execute(const ProviderName: WideString; const CommandText: WideString; var Params: Binary; var OwnerData: String);
|
|
begin
|
|
try
|
|
__Message.InitializeRequestMessage(__TransportChannel, '', fIAppServerName, 'AS_Execute');
|
|
__Message.Write('ProviderName', TypeInfo(WideString), ProviderName, []);
|
|
__Message.Write('CommandText', TypeInfo(WideString), CommandText, []);
|
|
__Message.Write('Params', TypeInfo(Binary), Params, []);
|
|
__Message.Write('OwnerData', TypeInfo(String), OwnerData, []);
|
|
__Message.Finalize;
|
|
|
|
__TransportChannel.Dispatch(__Message);
|
|
|
|
__Message.Read('Params', TypeInfo(Binary), Params, []);
|
|
__Message.Read('OwnerData', TypeInfo(String), OwnerData, []);
|
|
finally
|
|
__Message.FreeStream;
|
|
end
|
|
end;
|
|
|
|
initialization
|
|
RegisterROClass(TProviderNames);
|
|
RegisterProxyClass(IAppServer_IID, TAppServer_Proxy);
|
|
|
|
finalization
|
|
UnregisterProxyClass(IAppServer_IID);
|
|
end.
|