unit MegaDemoLibrary_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 Remobjects.inc} interface uses {vcl:} Classes, TypInfo, {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf, {Used RODLs:} DataAbstract4_Intf; const { Library ID } LibraryUID = '{7C1E1A6D-C50B-482D-AE41-090E9A61BBB0}'; TargetNamespace = ''; { Service Interface ID's } ILoginService_IID : TGUID = '{ABD98EFC-78DA-4704-A3EB-0D89CC8BC618}'; IOrdersService_IID : TGUID = '{6EC8387D-B288-4EE0-BFB7-C4BAEF28E50B}'; { Event ID's } type { Forward declarations } ILoginService = interface; IOrdersService = interface; LoginInfo = class; { Enumerateds } JobType = (JobType_SalesRep,JobType_Manager,JobType_Engineer); { LoginInfo } LoginInfo = class(TROComplexType) private fSessionID: String; fEmployeeID: Integer; fFirstName: String; fLastName: String; fJob_Type: JobType; fJobTitle: String; public procedure Assign(iSource: TPersistent); override; procedure ReadComplex(ASerializer: TObject); override; procedure WriteComplex(ASerializer: TObject); override; published property SessionID:String read fSessionID write fSessionID; property EmployeeID:Integer read fEmployeeID write fEmployeeID; property FirstName:String read fFirstName write fFirstName; property LastName:String read fLastName write fLastName; property Job_Type:JobType read fJob_Type write fJob_Type; property JobTitle:String read fJobTitle write fJobTitle; end; { LoginInfoCollection } LoginInfoCollection = class(TROCollection) protected constructor Create(aItemClass: TCollectionItemClass); overload; function GetItems(aIndex: integer): LoginInfo; procedure SetItems(aIndex: integer; const Value: LoginInfo); public constructor Create; overload; function Add: LoginInfo; reintroduce; property Items[Index: integer]:LoginInfo read GetItems write SetItems; default; end; { ILoginService } ILoginService = interface(IDataAbstractService) ['{ABD98EFC-78DA-4704-A3EB-0D89CC8BC618}'] function Login(const UserName: String; const Password: String; out aLoginInfo: LoginInfo): Boolean; procedure Logout; end; { CoLoginService } CoLoginService = class class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ILoginService; end; { TLoginService_Proxy } TLoginService_Proxy = class(TDataAbstractService_Proxy, ILoginService) protected function __GetInterfaceName:string; override; function Login(const UserName: String; const Password: String; out aLoginInfo: LoginInfo): Boolean; procedure Logout; end; { IOrdersService } IOrdersService = interface(IDataAbstractService) ['{6EC8387D-B288-4EE0-BFB7-C4BAEF28E50B}'] function GetCustomerOrders(const CustomerID: String): Binary; end; { CoOrdersService } CoOrdersService = class class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IOrdersService; end; { TOrdersService_Proxy } TOrdersService_Proxy = class(TDataAbstractService_Proxy, IOrdersService) protected function __GetInterfaceName:string; override; function GetCustomerOrders(const CustomerID: String): Binary; end; implementation uses {vcl:} SysUtils, {RemObjects:} uROEventRepository, uROSerializer, uRORes; { LoginInfo } procedure LoginInfo.Assign(iSource: TPersistent); var lSource: MegaDemoLibrary_Intf.LoginInfo; begin inherited Assign(iSource); if (iSource is MegaDemoLibrary_Intf.LoginInfo) then begin lSource := MegaDemoLibrary_Intf.LoginInfo(iSource); SessionID := lSource.SessionID; EmployeeID := lSource.EmployeeID; FirstName := lSource.FirstName; LastName := lSource.LastName; Job_Type := lSource.Job_Type; JobTitle := lSource.JobTitle; end; end; procedure LoginInfo.ReadComplex(ASerializer: TObject); var l_EmployeeID: Integer; l_FirstName: String; l_Job_Type: JobType; l_JobTitle: String; l_LastName: String; l_SessionID: String; begin if TROSerializer(ASerializer).RecordStrictOrder then begin l_SessionID := SessionID; TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID); SessionID := l_SessionID; l_EmployeeID := EmployeeID; TROSerializer(ASerializer).ReadInteger('EmployeeID', otSLong, l_EmployeeID); EmployeeID := l_EmployeeID; l_FirstName := FirstName; TROSerializer(ASerializer).ReadUTF8String('FirstName', l_FirstName); FirstName := l_FirstName; l_LastName := LastName; TROSerializer(ASerializer).ReadUTF8String('LastName', l_LastName); LastName := l_LastName; l_Job_Type := Job_Type; TROSerializer(ASerializer).ReadEnumerated('Job_Type',TypeInfo(JobType), l_Job_Type); Job_Type := l_Job_Type; l_JobTitle := JobTitle; TROSerializer(ASerializer).ReadUTF8String('JobTitle', l_JobTitle); JobTitle := l_JobTitle; end else begin l_EmployeeID := EmployeeID; TROSerializer(ASerializer).ReadInteger('EmployeeID', otSLong, l_EmployeeID); EmployeeID := l_EmployeeID; l_FirstName := FirstName; TROSerializer(ASerializer).ReadUTF8String('FirstName', l_FirstName); FirstName := l_FirstName; l_Job_Type := Job_Type; TROSerializer(ASerializer).ReadEnumerated('Job_Type',TypeInfo(JobType), l_Job_Type); Job_Type := l_Job_Type; l_JobTitle := JobTitle; TROSerializer(ASerializer).ReadUTF8String('JobTitle', l_JobTitle); JobTitle := l_JobTitle; l_LastName := LastName; TROSerializer(ASerializer).ReadUTF8String('LastName', l_LastName); LastName := l_LastName; l_SessionID := SessionID; TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID); SessionID := l_SessionID; end; end; procedure LoginInfo.WriteComplex(ASerializer: TObject); var l_EmployeeID: Integer; l_FirstName: String; l_Job_Type: JobType; l_JobTitle: String; l_LastName: String; l_SessionID: String; begin if TROSerializer(ASerializer).RecordStrictOrder then begin l_SessionID := SessionID; TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID); SessionID := l_SessionID; l_EmployeeID := EmployeeID; TROSerializer(ASerializer).WriteInteger('EmployeeID', otSLong, l_EmployeeID); EmployeeID := l_EmployeeID; l_FirstName := FirstName; TROSerializer(ASerializer).WriteUTF8String('FirstName', l_FirstName); FirstName := l_FirstName; l_LastName := LastName; TROSerializer(ASerializer).WriteUTF8String('LastName', l_LastName); LastName := l_LastName; l_Job_Type := Job_Type; TROSerializer(ASerializer).WriteEnumerated('Job_Type',TypeInfo(JobType), l_Job_Type); Job_Type := l_Job_Type; l_JobTitle := JobTitle; TROSerializer(ASerializer).WriteUTF8String('JobTitle', l_JobTitle); JobTitle := l_JobTitle; end else begin l_EmployeeID := EmployeeID; TROSerializer(ASerializer).WriteInteger('EmployeeID', otSLong, l_EmployeeID); EmployeeID := l_EmployeeID; l_FirstName := FirstName; TROSerializer(ASerializer).WriteUTF8String('FirstName', l_FirstName); FirstName := l_FirstName; l_Job_Type := Job_Type; TROSerializer(ASerializer).WriteEnumerated('Job_Type',TypeInfo(JobType), l_Job_Type); Job_Type := l_Job_Type; l_JobTitle := JobTitle; TROSerializer(ASerializer).WriteUTF8String('JobTitle', l_JobTitle); JobTitle := l_JobTitle; l_LastName := LastName; TROSerializer(ASerializer).WriteUTF8String('LastName', l_LastName); LastName := l_LastName; l_SessionID := SessionID; TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID); SessionID := l_SessionID; end; end; { LoginInfoCollection } constructor LoginInfoCollection.Create; begin inherited Create(LoginInfo); end; constructor LoginInfoCollection.Create(aItemClass: TCollectionItemClass); begin inherited Create(aItemClass); end; function LoginInfoCollection.Add: LoginInfo; begin result := LoginInfo(inherited Add); end; function LoginInfoCollection.GetItems(aIndex: integer): LoginInfo; begin result := LoginInfo(inherited Items[aIndex]); end; procedure LoginInfoCollection.SetItems(aIndex: integer; const Value: LoginInfo); begin LoginInfo(inherited Items[aIndex]).Assign(Value); end; { CoLoginService } class function CoLoginService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ILoginService; begin result := TLoginService_Proxy.Create(aMessage, aTransportChannel); end; { TLoginService_Proxy } function TLoginService_Proxy.__GetInterfaceName:string; begin result := 'LoginService'; end; function TLoginService_Proxy.Login(const UserName: String; const Password: String; out aLoginInfo: LoginInfo): Boolean; begin try aLoginInfo := nil; __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'Login'); __Message.Write('UserName', TypeInfo(String), UserName, []); __Message.Write('Password', TypeInfo(String), Password, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(Boolean), result, []); __Message.Read('aLoginInfo', TypeInfo(MegaDemoLibrary_Intf.LoginInfo), aLoginInfo, []); finally __Message.UnsetAttributes(__TransportChannel); __Message.FreeStream; end end; procedure TLoginService_Proxy.Logout; begin try __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'Logout'); __Message.Finalize; __TransportChannel.Dispatch(__Message); finally __Message.FreeStream; end end; { CoOrdersService } class function CoOrdersService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IOrdersService; begin result := TOrdersService_Proxy.Create(aMessage, aTransportChannel); end; { TOrdersService_Proxy } function TOrdersService_Proxy.__GetInterfaceName:string; begin result := 'OrdersService'; end; function TOrdersService_Proxy.GetCustomerOrders(const CustomerID: String): Binary; begin try result := nil; __Message.InitializeRequestMessage(__TransportChannel, 'MegaDemoLibrary', __InterfaceName, 'GetCustomerOrders'); __Message.Write('CustomerID', TypeInfo(String), CustomerID, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(Binary), result, []); finally __Message.UnsetAttributes(__TransportChannel); __Message.FreeStream; end end; initialization RegisterROClass(LoginInfo); RegisterProxyClass(ILoginService_IID, TLoginService_Proxy); RegisterProxyClass(IOrdersService_IID, TOrdersService_Proxy); finalization UnregisterROClass(LoginInfo); UnregisterProxyClass(ILoginService_IID); UnregisterProxyClass(IOrdersService_IID); end.