unit DataAbstract3_Intf; {----------------------------------------------------------------------------} { This unit was automatically generated by the RemObjects SDK after reading } { the RODL file associated with this project . } { } { Do not modify this unit manually, or your changes will be lost when this } { unit is regenerated the next time you compile the project. } {----------------------------------------------------------------------------} {$I DataAbstract.inc} interface uses {vcl:} Classes, TypInfo, {RemObjects:} uROClasses, uROClient, uROTypes, uROClientIntf; const { Library ID } LibraryUID = '{2966A4BF-569C-45AA-8F34-CF1E155FD77A}'; { Service Interface ID's } IDARemoteService_IID : TGUID = '{C532E842-0AA9-4253-A9BF-AFCF22885B97}'; IDALoginService_IID : TGUID = '{58550AA0-B64F-495A-B2F8-C981D4C39180}'; { Event ID's } type { Forward declarations } IDARemoteService = interface; IDALoginService = interface; TDADatasetParamArray = class; TDADatasetRequestInfoArray = class; TDAStringArray = class; TDADatasetParam = class; TDADatasetRequestInfo = class; TDALoginInfo = class; { TDADatasetParam } TDADatasetParam = class(TROComplexType) private fName: String; fValue: Variant; public procedure Assign(iSource: TPersistent); override; published property Name:String read fName write fName; property Value:Variant read fValue write fValue; end; { TDADatasetParamCollection } TDADatasetParamCollection = class(TROCollection) protected constructor Create(aItemClass: TCollectionItemClass); overload; function GetItems(Index: integer): TDADatasetParam; procedure SetItems(Index: integer; const Value: TDADatasetParam); public constructor Create; overload; function Add: TDADatasetParam; reintroduce; procedure SaveToArray(anArray: TDADatasetParamArray); procedure LoadFromArray(anArray: TDADatasetParamArray); property Items[Index: integer]:TDADatasetParam read GetItems write SetItems; default; end; { TDADatasetRequestInfo } TDADatasetRequestInfo = class(TROComplexType) private fDatasetName: String; fIncludeSchema: Boolean; fMaxRecords: Integer; fParams: TDADatasetParamArray; function GetParams: TDADatasetParamArray; public procedure Assign(iSource: TPersistent); override; published property DatasetName:String read fDatasetName write fDatasetName; property IncludeSchema:Boolean read fIncludeSchema write fIncludeSchema; property MaxRecords:Integer read fMaxRecords write fMaxRecords; property Params:TDADatasetParamArray read GetParams write fParams; end; { TDADatasetRequestInfoCollection } TDADatasetRequestInfoCollection = class(TROCollection) protected constructor Create(aItemClass: TCollectionItemClass); overload; function GetItems(Index: integer): TDADatasetRequestInfo; procedure SetItems(Index: integer; const Value: TDADatasetRequestInfo); public constructor Create; overload; function Add: TDADatasetRequestInfo; reintroduce; procedure SaveToArray(anArray: TDADatasetRequestInfoArray); procedure LoadFromArray(anArray: TDADatasetRequestInfoArray); property Items[Index: integer]:TDADatasetRequestInfo read GetItems write SetItems; default; end; { TDALoginInfo } TDALoginInfo = class(TROComplexType) private fSessionID: String; fUserID: String; fPrivileges: TDAStringArray; fAttributes: TDAStringArray; fData: Binary; function GetPrivileges: TDAStringArray; function GetAttributes: TDAStringArray; function GetData: Binary; public procedure Assign(iSource: TPersistent); override; published property SessionID:String read fSessionID write fSessionID; property UserID:String read fUserID write fUserID; property Privileges:TDAStringArray read GetPrivileges write fPrivileges; property Attributes:TDAStringArray read GetAttributes write fAttributes; property Data:Binary read GetData write fData; end; { TDALoginInfoCollection } TDALoginInfoCollection = class(TROCollection) protected constructor Create(aItemClass: TCollectionItemClass); overload; function GetItems(Index: integer): TDALoginInfo; procedure SetItems(Index: integer; const Value: TDALoginInfo); public constructor Create; overload; function Add: TDALoginInfo; reintroduce; property Items[Index: integer]:TDALoginInfo read GetItems write SetItems; default; end; { TDADatasetParamArray } TDADatasetParamArray = class(TROArray) private fCount: Integer; fItems : array of TDADatasetParam; protected procedure Grow; virtual; function GetItems(aIndex: integer): TDADatasetParam; procedure SetItems(aIndex: integer; const Value: TDADatasetParam); function GetCount: integer; override; public class function GetItemType: PTypeInfo; override; class function GetItemClass: TClass; override; class function GetItemSize: integer; override; function GetItemRef(aIndex: integer): pointer; override; procedure SetItemRef(aIndex: integer; Ref: pointer); override; procedure Clear; override; procedure Delete(aIndex: integer); override; procedure Resize(ElementCount: integer); override; procedure Assign(iSource:TPersistent); override; function Add: TDADatasetParam; overload; function Add(const Value: TDADatasetParam):integer; overload; property Count : integer read GetCount; property Items[Index: integer]:TDADatasetParam read GetItems write SetItems; default; end; { TDADatasetRequestInfoArray } TDADatasetRequestInfoArray = class(TROArray) private fCount: Integer; fItems : array of TDADatasetRequestInfo; protected procedure Grow; virtual; function GetItems(aIndex: integer): TDADatasetRequestInfo; procedure SetItems(aIndex: integer; const Value: TDADatasetRequestInfo); function GetCount: integer; override; public class function GetItemType: PTypeInfo; override; class function GetItemClass: TClass; override; class function GetItemSize: integer; override; function GetItemRef(aIndex: integer): pointer; override; procedure SetItemRef(aIndex: integer; Ref: pointer); override; procedure Clear; override; procedure Delete(aIndex: integer); override; procedure Resize(ElementCount: integer); override; procedure Assign(iSource:TPersistent); override; function Add: TDADatasetRequestInfo; overload; function Add(const Value: TDADatasetRequestInfo):integer; overload; property Count : integer read GetCount; property Items[Index: integer]:TDADatasetRequestInfo read GetItems write SetItems; default; end; { TDAStringArray } TDAStringArray = class(TROArray) private fCount: Integer; fItems : array of String; protected procedure Grow; virtual; function GetItems(AIndex: integer): String; procedure SetItems(AIndex: integer; const Value: String); function GetCount: integer; override; public class function GetItemType: PTypeInfo; override; class function GetItemSize: integer; override; function GetItemRef(AIndex: integer): pointer; override; procedure Clear; override; procedure Delete(AIndex: 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; { IDARemoteService } IDARemoteService = interface ['{C532E842-0AA9-4253-A9BF-AFCF22885B97}'] function GetDatasetSchema(const aDatasetName: String): Binary; function GetDatasetScripts(const DatasetNames: String): String; function GetDatasetData(const DatasetName: String; const Params: String; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; function GetDatasetDataEx(const DatasetName: String; const Params: TDADatasetParamArray; const UserFilter: String; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; function UpdateData(const Delta: Binary): Binary; function ExecuteSQLCommand(const SQL: String): Integer; function GetSchemaAsXML: String; function GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): Binary; function ExecuteSQLCommandEx(const CommandName: String; const Params: TDADatasetParamArray): Integer; end; { CoDARemoteService } CoDARemoteService = class class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDARemoteService; end; { TDARemoteService_Proxy } TDARemoteService_Proxy = class(TROProxy, IDARemoteService) protected function __GetInterfaceName:string;{.$IFNDEF FPC} override;{.$ENDIF} function GetDatasetSchema(const aDatasetName: String): Binary; function GetDatasetScripts(const DatasetNames: String): String; function GetDatasetData(const DatasetName: String; const Params: String; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; function GetDatasetDataEx(const DatasetName: String; const Params: TDADatasetParamArray; const UserFilter: String; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; function UpdateData(const Delta: Binary): Binary; function ExecuteSQLCommand(const SQL: String): Integer; function GetSchemaAsXML: String; function GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): Binary; function ExecuteSQLCommandEx(const CommandName: String; const Params: TDADatasetParamArray): Integer; end; { IDALoginService } IDALoginService = interface(IDARemoteService) ['{58550AA0-B64F-495A-B2F8-C981D4C39180}'] function Login(const UserID: String; const Password: String; out LoginInfo: TDALoginInfo): Boolean; procedure Logout; end; { CoDALoginService } CoDALoginService = class class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDALoginService; end; { TDALoginService_Proxy } TDALoginService_Proxy = class(TDARemoteService_Proxy, IDALoginService) protected function __GetInterfaceName:string; override; function Login(const UserID: String; const Password: String; out LoginInfo: TDALoginInfo): Boolean; procedure Logout; end; implementation uses {vcl:} SysUtils, {RemObjects:} uROEventRepository, uRORes; { TDADatasetParamArray } procedure TDADatasetParamArray.Assign(iSource: TPersistent); var lSource:TDADatasetParamArray; i:integer; begin if (iSource is TDADatasetParamArray) then begin lSource := TDADatasetParamArray(iSource); Clear(); Resize(lSource.Count); for i := 0 to Count-1 do begin if Assigned(lSource.Items[i]) then begin Items[i] := lSource.Items[i].Clone() as TDADatasetParam; end; end; end else begin inherited Assign(iSource); end; end; class function TDADatasetParamArray.GetItemType: PTypeInfo; begin result := TypeInfo(TDADatasetParam); end; class function TDADatasetParamArray.GetItemClass: TClass; begin result := TDADatasetParam; end; class function TDADatasetParamArray.GetItemSize: integer; begin result := SizeOf(TDADatasetParam); end; function TDADatasetParamArray.GetItems(aIndex: integer): TDADatasetParam; begin if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); result := fItems[aIndex]; end; function TDADatasetParamArray.GetItemRef(aIndex: integer): pointer; begin if (AIndex < 0) or (AIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]); result := fItems[AIndex]; end; procedure TDADatasetParamArray.SetItemRef(AIndex: integer; Ref: pointer); begin if (AIndex < 0) or (AIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]); if Ref <> fItems[AIndex] then fItems[AIndex] := Ref; end; procedure TDADatasetParamArray.Clear; var i: integer; begin for i := 0 to (Count-1) do fItems[i].Free(); SetLength(fItems, 0); FCount := 0; end; procedure TDADatasetParamArray.Delete(aIndex: integer); var i: integer; begin if (AIndex>=Count) then RaiseError(err_InvalidIndex, [AIndex]); fItems[AIndex].Free(); if (AIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); fItems[aIndex] := Value; end; procedure TDADatasetParamArray.Resize(ElementCount: integer); begin SetLength(fItems, ElementCount); FCount := ElementCount; end; function TDADatasetParamArray.GetCount: integer; begin result := FCount; end; procedure TDADatasetParamArray.Grow; var Delta, Capacity: Integer; begin Capacity := Length(fItems); if Capacity > 64 then Delta := Capacity div 4 else if Capacity > 8 then Delta := 16 else Delta := 4; SetLength(fItems, Capacity + Delta); end; function TDADatasetParamArray.Add: TDADatasetParam; begin result := TDADatasetParam.Create; Add(Result); end; function TDADatasetParamArray.Add(const Value:TDADatasetParam): integer; begin Result := Count; if Length(fItems) = Result then Grow; fItems[result] := Value; Inc(fCount); end; { TDADatasetRequestInfoArray } procedure TDADatasetRequestInfoArray.Assign(iSource: TPersistent); var lSource:TDADatasetRequestInfoArray; i:integer; begin if (iSource is TDADatasetRequestInfoArray) then begin lSource := TDADatasetRequestInfoArray(iSource); Clear(); Resize(lSource.Count); for i := 0 to Count-1 do begin if Assigned(lSource.Items[i]) then begin Items[i] := lSource.Items[i].Clone() as TDADatasetRequestInfo; end; end; end else begin inherited Assign(iSource); end; end; class function TDADatasetRequestInfoArray.GetItemType: PTypeInfo; begin result := TypeInfo(TDADatasetRequestInfo); end; class function TDADatasetRequestInfoArray.GetItemClass: TClass; begin result := TDADatasetRequestInfo; end; class function TDADatasetRequestInfoArray.GetItemSize: integer; begin result := SizeOf(TDADatasetRequestInfo); end; function TDADatasetRequestInfoArray.GetItems(AIndex: integer): TDADatasetRequestInfo; begin if (AIndex < 0) or (AIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]); result := fItems[AIndex]; end; function TDADatasetRequestInfoArray.GetItemRef(AIndex: integer): pointer; begin if (AIndex < 0) or (AIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]); result := fItems[AIndex]; end; procedure TDADatasetRequestInfoArray.SetItemRef(AIndex: integer; Ref: pointer); begin if (AIndex < 0) or (AIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]); if Ref <> fItems[AIndex] then fItems[AIndex] := Ref; end; procedure TDADatasetRequestInfoArray.Clear; var i: integer; begin for i := 0 to (Count-1) do fItems[i].Free(); SetLength(fItems, 0); FCount := 0; end; procedure TDADatasetRequestInfoArray.Delete(AIndex: integer); var i: integer; begin if (AIndex>=Count) then RaiseError(err_InvalidIndex, [AIndex]); fItems[AIndex].Free(); if (AIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]); fItems[AIndex] := Value; end; procedure TDADatasetRequestInfoArray.Resize(ElementCount: integer); begin SetLength(fItems, ElementCount); FCount := ElementCount; end; function TDADatasetRequestInfoArray.GetCount: integer; begin result := FCount; end; procedure TDADatasetRequestInfoArray.Grow; var Delta, Capacity: Integer; begin Capacity := Length(fItems); if Capacity > 64 then Delta := Capacity div 4 else if Capacity > 8 then Delta := 16 else Delta := 4; SetLength(fItems, Capacity + Delta); end; function TDADatasetRequestInfoArray.Add: TDADatasetRequestInfo; begin result := TDADatasetRequestInfo.Create; Add(Result); end; function TDADatasetRequestInfoArray.Add(const Value:TDADatasetRequestInfo): integer; begin Result := Count; if Length(fItems) = Result then Grow; fItems[result] := Value; Inc(fCount); end; { TDAStringArray } procedure TDAStringArray.Assign(iSource: TPersistent); var lSource:TDAStringArray; i:integer; begin if (iSource is TDAStringArray) then begin lSource := TDAStringArray(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 TDAStringArray.GetItemType: PTypeInfo; begin result := TypeInfo(String); end; class function TDAStringArray.GetItemSize: integer; begin result := SizeOf(String); end; function TDAStringArray.GetItems(AIndex: integer): String; begin if (AIndex < 0) or (AIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]); result := fItems[AIndex]; end; function TDAStringArray.GetItemRef(AIndex: integer): pointer; begin if (AIndex < 0) or (AIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]); result := @fItems[AIndex]; end; procedure TDAStringArray.Clear; begin SetLength(fItems, 0); FCount := 0; end; procedure TDAStringArray.Delete(AIndex: integer); var i: integer; begin if (AIndex>=Count) then RaiseError(err_InvalidIndex, [AIndex]); if (AIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[AIndex]); fItems[AIndex] := Value; end; procedure TDAStringArray.Resize(ElementCount: integer); begin SetLength(fItems, ElementCount); FCount := ElementCount; end; function TDAStringArray.GetCount: integer; begin result := FCount; end; procedure TDAStringArray.Grow; var Delta, Capacity: Integer; begin Capacity := Length(fItems); if Capacity > 64 then Delta := Capacity div 4 else if Capacity > 8 then Delta := 16 else Delta := 4; SetLength(fItems, Capacity + Delta); end; function TDAStringArray.Add(const Value: String): integer; begin Result := Count; if Length(fItems) = Result then Grow; fItems[result] := Value; Inc(fCount); end; { TDADatasetParam } procedure TDADatasetParam.Assign(iSource: TPersistent); var lSource:TDADatasetParam; begin inherited Assign(iSource); if (iSource is TDADatasetParam) then begin lSource := TDADatasetParam(iSource); Name := lSource.Name; Value := lSource.Value; end; end; { TDADatasetParamCollection } constructor TDADatasetParamCollection.Create; begin inherited Create(TDADatasetParam); end; constructor TDADatasetParamCollection.Create(aItemClass: TCollectionItemClass); begin inherited Create(aItemClass); end; function TDADatasetParamCollection.Add: TDADatasetParam; begin result := TDADatasetParam(inherited Add); end; function TDADatasetParamCollection.GetItems(Index: integer): TDADatasetParam; begin result := TDADatasetParam(inherited Items[Index]); end; procedure TDADatasetParamCollection.LoadFromArray(anArray: TDADatasetParamArray); var i : integer; begin Clear; for i := 0 to (anArray.Count-1) do Add.Assign(anArray[i]); end; procedure TDADatasetParamCollection.SaveToArray(anArray: TDADatasetParamArray); var i : integer; begin anArray.Clear; anArray.Resize(Count); for i := 0 to (Count-1) do begin anArray[i] := TDADatasetParam.Create; anArray[i].Assign(Items[i]); end; end; procedure TDADatasetParamCollection.SetItems(Index: integer; const Value: TDADatasetParam); begin TDADatasetParam(inherited Items[Index]).Assign(Value); end; { TDADatasetRequestInfo } procedure TDADatasetRequestInfo.Assign(iSource: TPersistent); var lSource:TDADatasetRequestInfo; begin inherited Assign(iSource); if (iSource is TDADatasetRequestInfo) then begin lSource := TDADatasetRequestInfo(iSource); DatasetName := lSource.DatasetName; IncludeSchema := lSource.IncludeSchema; MaxRecords := lSource.MaxRecords; Params.Assign(lSource.Params); end; end; function TDADatasetRequestInfo.GetParams: TDADatasetParamArray; begin if (fParams = nil) then fParams := TDADatasetParamArray.Create(); result := fParams; end; { TDADatasetRequestInfoCollection } constructor TDADatasetRequestInfoCollection.Create; begin inherited Create(TDADatasetRequestInfo); end; constructor TDADatasetRequestInfoCollection.Create(aItemClass: TCollectionItemClass); begin inherited Create(aItemClass); end; function TDADatasetRequestInfoCollection.Add: TDADatasetRequestInfo; begin result := TDADatasetRequestInfo(inherited Add); end; function TDADatasetRequestInfoCollection.GetItems(Index: integer): TDADatasetRequestInfo; begin result := TDADatasetRequestInfo(inherited Items[Index]); end; procedure TDADatasetRequestInfoCollection.LoadFromArray(anArray: TDADatasetRequestInfoArray); var i : integer; begin Clear; for i := 0 to (anArray.Count-1) do Add.Assign(anArray[i]); end; procedure TDADatasetRequestInfoCollection.SaveToArray(anArray: TDADatasetRequestInfoArray); var i : integer; begin anArray.Clear; anArray.Resize(Count); for i := 0 to (Count-1) do begin anArray[i] := TDADatasetRequestInfo.Create; anArray[i].Assign(Items[i]); end; end; procedure TDADatasetRequestInfoCollection.SetItems(Index: integer; const Value: TDADatasetRequestInfo); begin TDADatasetRequestInfo(inherited Items[Index]).Assign(Value); end; { TDALoginInfo } procedure TDALoginInfo.Assign(iSource: TPersistent); var lSource:TDALoginInfo; begin inherited Assign(iSource); if (iSource is TDALoginInfo) then begin lSource := TDALoginInfo(iSource); SessionID := lSource.SessionID; UserID := lSource.UserID; Privileges.Assign(lSource.Privileges); Attributes.Assign(lSource.Attributes); Data.Assign(lSource.Data); end; end; function TDALoginInfo.GetPrivileges: TDAStringArray; begin if (fPrivileges = nil) then fPrivileges := TDAStringArray.Create(); result := fPrivileges; end; function TDALoginInfo.GetAttributes: TDAStringArray; begin if (fAttributes = nil) then fAttributes := TDAStringArray.Create(); result := fAttributes; end; function TDALoginInfo.GetData: Binary; begin if (fData = nil) then fData := Binary.Create(); result := fData; end; { TDALoginInfoCollection } constructor TDALoginInfoCollection.Create; begin inherited Create(TDALoginInfo); end; constructor TDALoginInfoCollection.Create(aItemClass: TCollectionItemClass); begin inherited Create(aItemClass); end; function TDALoginInfoCollection.Add: TDALoginInfo; begin result := TDALoginInfo(inherited Add); end; function TDALoginInfoCollection.GetItems(Index: integer): TDALoginInfo; begin result := TDALoginInfo(inherited Items[Index]); end; procedure TDALoginInfoCollection.SetItems(Index: integer; const Value: TDALoginInfo); begin TDALoginInfo(inherited Items[Index]).Assign(Value); end; { CoDARemoteService } class function CoDARemoteService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDARemoteService; begin result := TDARemoteService_Proxy.Create(aMessage, aTransportChannel); end; { TDARemoteService_Proxy } function TDARemoteService_Proxy.__GetInterfaceName:string; begin result := 'DARemoteService'; end; function TDARemoteService_Proxy.GetDatasetSchema(const aDatasetName: String): Binary; begin result := nil; try __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'GetDatasetSchema'); __Message.Write('aDatasetName', TypeInfo(String), aDatasetName, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(Binary), result, []); finally __Message.FreeStream; end end; function TDARemoteService_Proxy.GetDatasetScripts(const DatasetNames: String): String; begin try __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'GetDatasetScripts'); __Message.Write('DatasetNames', TypeInfo(String), DatasetNames, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(String), result, []); finally __Message.FreeStream; end end; function TDARemoteService_Proxy.GetDatasetData(const DatasetName: String; const Params: String; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; begin result := nil; try __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'GetDatasetData'); __Message.Write('DatasetName', TypeInfo(String), DatasetName, []); __Message.Write('Params', TypeInfo(String), Params, []); __Message.Write('IncludeSchema', TypeInfo(Boolean), IncludeSchema, []); __Message.Write('MaxRecords', TypeInfo(Integer), MaxRecords, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(Binary), result, []); finally __Message.FreeStream; end end; function TDARemoteService_Proxy.GetDatasetDataEx(const DatasetName: String; const Params: TDADatasetParamArray; const UserFilter: String; const IncludeSchema: Boolean; const MaxRecords: Integer): Binary; begin result := nil; try __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'GetDatasetDataEx'); __Message.Write('DatasetName', TypeInfo(String), DatasetName, []); __Message.Write('Params', TypeInfo(DataAbstract3_Intf.TDADatasetParamArray), Params, []); __Message.Write('UserFilter', TypeInfo(String), UserFilter, []); __Message.Write('IncludeSchema', TypeInfo(Boolean), IncludeSchema, []); __Message.Write('MaxRecords', TypeInfo(Integer), MaxRecords, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(Binary), result, []); finally __Message.FreeStream; end end; function TDARemoteService_Proxy.UpdateData(const Delta: Binary): Binary; begin result := nil; try __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'UpdateData'); __Message.Write('Delta', TypeInfo(Binary), Delta, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(Binary), result, []); finally __Message.FreeStream; end end; function TDARemoteService_Proxy.ExecuteSQLCommand(const SQL: String): Integer; begin try __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'ExecuteSQLCommand'); __Message.Write('SQL', TypeInfo(String), SQL, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(Integer), result, []); finally __Message.FreeStream; end end; function TDARemoteService_Proxy.GetSchemaAsXML: String; begin try __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'GetSchemaAsXML'); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(String), result, []); finally __Message.FreeStream; end end; function TDARemoteService_Proxy.GetMultipleDatasets(const DatasetRequestInfoArray: TDADatasetRequestInfoArray): Binary; begin result := nil; try __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'GetMultipleDatasets'); __Message.Write('DatasetRequestInfoArray', TypeInfo(DataAbstract3_Intf.TDADatasetRequestInfoArray), DatasetRequestInfoArray, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(Binary), result, []); finally __Message.FreeStream; end end; function TDARemoteService_Proxy.ExecuteSQLCommandEx(const CommandName: String; const Params: TDADatasetParamArray): Integer; begin try __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'ExecuteSQLCommandEx'); __Message.Write('CommandName', TypeInfo(String), CommandName, []); __Message.Write('Params', TypeInfo(DataAbstract3_Intf.TDADatasetParamArray), Params, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(Integer), result, []); finally __Message.FreeStream; end end; { CoDALoginService } class function CoDALoginService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IDALoginService; begin result := TDALoginService_Proxy.Create(aMessage, aTransportChannel); end; { TDALoginService_Proxy } function TDALoginService_Proxy.__GetInterfaceName:string; begin result := 'DALoginService'; end; function TDALoginService_Proxy.Login(const UserID: String; const Password: String; out LoginInfo: TDALoginInfo): Boolean; begin LoginInfo := nil; try __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'Login'); __Message.Write('UserID', TypeInfo(String), UserID, []); __Message.Write('Password', TypeInfo(String), Password, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(Boolean), result, []); __Message.Read('LoginInfo', TypeInfo(DataAbstract3_Intf.TDALoginInfo), LoginInfo, []); finally __Message.FreeStream; end end; procedure TDALoginService_Proxy.Logout; begin try __Message.InitializeRequestMessage(__TransportChannel, 'DataAbstract', __InterfaceName, 'Logout'); __Message.Finalize; __TransportChannel.Dispatch(__Message); finally __Message.FreeStream; end end; initialization RegisterROClass(TDADatasetParam); RegisterROClass(TDADatasetRequestInfo); RegisterROClass(TDALoginInfo); RegisterROClass(TDADatasetParamArray); RegisterROClass(TDADatasetRequestInfoArray); RegisterROClass(TDAStringArray); RegisterProxyClass(IDARemoteService_IID, TDARemoteService_Proxy); RegisterProxyClass(IDALoginService_IID, TDALoginService_Proxy); finalization UnregisterROClass(TDADatasetParam); UnregisterROClass(TDADatasetRequestInfo); UnregisterROClass(TDALoginInfo); UnregisterROClass(TDADatasetParamArray); UnregisterROClass(TDADatasetRequestInfoArray); UnregisterROClass(TDAStringArray); UnregisterProxyClass(IDARemoteService_IID); UnregisterProxyClass(IDALoginService_IID); end.