204 lines
7.1 KiB
ObjectPascal
204 lines
7.1 KiB
ObjectPascal
|
|
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.
|