Componentes.Terceros.RemObj.../internal/5.0.23.613/1/RemObjects SDK for Delphi/Samples/Extended File Transfer/ExtendedFileTransferLibrary_Intf.pas

204 lines
7.1 KiB
ObjectPascal
Raw Normal View History

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.