unit ExtendedFileTransferLibrary_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. } {----------------------------------------------------------------------------} interface uses {vcl:} Classes, TypInfo, {RemObjects:} uROClasses, uROClient, uROTypes, uROClientIntf; const { Library ID } LibraryUID = '{915A4222-6FA3-43A2-AE8B-C517E0F844BB}'; { Service Interface ID's } IExtendedFileTransferService_IID : TGUID = '{2A7AFE06-0600-46ED-9B7A-C694A1191311}'; { Event ID's } EID_FileEvents = 'FileEvents'; type { Forward declarations } IExtendedFileTransferService = interface; IFileEvents = interface; { IExtendedFileTransferService } IExtendedFileTransferService = interface ['{2A7AFE06-0600-46ED-9B7A-C694A1191311}'] procedure downloadsequence(const filename: String; const sequence: Integer; out filedata: Binary; out filesize: Int64); procedure uploadchunk(const isfirst: Boolean; const filename: String; const filedata: Binary); procedure uploadfinished(const filename: String; const filesize: Int64); end; { CoExtendedFileTransferService } CoExtendedFileTransferService = class class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IExtendedFileTransferService; end; { TExtendedFileTransferService_Proxy } TExtendedFileTransferService_Proxy = class(TROProxy, IExtendedFileTransferService) protected function __GetInterfaceName:string; override; procedure downloadsequence(const filename: String; const sequence: Integer; out filedata: Binary; out filesize: Int64); procedure uploadchunk(const isfirst: Boolean; const filename: String; const filedata: Binary); procedure uploadfinished(const filename: String; const filesize: Int64); end; { IFileEvents } IFileEvents = interface ['{E03490F1-99B5-4310-B3E8-F4C96BEAD1A5}'] procedure OnNewFileAvailable(const filename: String; const filesize: Int64); end; { IFileEvents_Writer } IFileEvents_Writer = interface(IROEventWriter) ['{E03490F1-99B5-4310-B3E8-F4C96BEAD1A5}'] procedure OnNewFileAvailable(const __Sender : TGUID; const filename: String; const filesize: Int64); end; implementation uses {vcl:} SysUtils, {RemObjects:} uROEventRepository, uRORes; { CoExtendedFileTransferService } class function CoExtendedFileTransferService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IExtendedFileTransferService; begin result := TExtendedFileTransferService_Proxy.Create(aMessage, aTransportChannel); end; { TExtendedFileTransferService_Proxy } function TExtendedFileTransferService_Proxy.__GetInterfaceName:string; begin result := 'ExtendedFileTransferService'; end; procedure TExtendedFileTransferService_Proxy.downloadsequence(const filename: String; const sequence: Integer; out filedata: Binary; out filesize: Int64); begin try filedata := nil; __Message.InitializeRequestMessage(__TransportChannel, 'ExtendedFileTransferLibrary', __InterfaceName, 'downloadsequence'); __Message.Write('filename', TypeInfo(String), filename, []); __Message.Write('sequence', TypeInfo(Integer), sequence, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('filedata', TypeInfo(Binary), filedata, []); __Message.Read('filesize', TypeInfo(Int64), filesize, []); finally __Message.FreeStream; end end; procedure TExtendedFileTransferService_Proxy.uploadchunk(const isfirst: Boolean; const filename: String; const filedata: Binary); begin try __Message.InitializeRequestMessage(__TransportChannel, 'ExtendedFileTransferLibrary', __InterfaceName, 'uploadchunk'); __Message.Write('isfirst', TypeInfo(Boolean), isfirst, []); __Message.Write('filename', TypeInfo(String), filename, []); __Message.Write('filedata', TypeInfo(Binary), filedata, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); finally __Message.FreeStream; end end; procedure TExtendedFileTransferService_Proxy.uploadfinished(const filename: String; const filesize: Int64); begin try __Message.InitializeRequestMessage(__TransportChannel, 'ExtendedFileTransferLibrary', __InterfaceName, 'uploadfinished'); __Message.Write('filename', TypeInfo(String), filename, []); __Message.Write('filesize', TypeInfo(Int64), filesize, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); finally __Message.FreeStream; end end; type { TFileEvents_Writer } TFileEvents_Writer = class(TROEventWriter, IFileEvents_Writer) protected procedure OnNewFileAvailable(const __Sender : TGUID; const filename: String; const filesize: Int64); end; procedure TFileEvents_Writer.OnNewFileAvailable(const __Sender : TGUID; const filename: String; const filesize: Int64); var __eventdata : Binary; begin __eventdata := Binary.Create; try __Message.InitializeEventMessage(NIL, 'ExtendedFileTransferLibrary', EID_FileEvents, 'OnNewFileAvailable'); __Message.Write('filename', TypeInfo(String), filename, []); __Message.Write('filesize', TypeInfo(Int64), filesize, []); __Message.Finalize; __Message.WriteToStream(__eventdata); Repository.StoreEventData(__Sender, __eventdata, ExcludeSender, ExcludeSessionList, SessionList.CommaText); except __eventdata.Free; end; end; type { TFileEvents_Invoker } TFileEvents_Invoker = class(TROEventInvoker) published procedure Invoke_OnNewFileAvailable(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); end; procedure TFileEvents_Invoker.Invoke_OnNewFileAvailable(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); var __lObjectDisposer: TROObjectDisposer; filename: String; filesize: Int64; begin try __Message.Read('filename', TypeInfo(String), filename, []); __Message.Read('filesize', TypeInfo(Int64), filesize, []); (__Target as IFileEvents).OnNewFileAvailable(filename, filesize); finally __lObjectDisposer:= TROObjectDisposer.Create(__EventReceiver); try finally __lObjectDisposer.Free(); end end end; initialization RegisterProxyClass(IExtendedFileTransferService_IID, TExtendedFileTransferService_Proxy); RegisterEventWriterClass(IFileEvents_Writer, TFileEvents_Writer); RegisterEventInvokerClass(EID_FileEvents, TFileEvents_Invoker); finalization UnregisterProxyClass(IExtendedFileTransferService_IID); UnregisterEventWriterClass(IFileEvents_Writer); UnregisterEventInvokerClass(EID_FileEvents); end.