@@ -54,7 +54,7 @@ interface
5454 XSuperObject,
5555
5656 Optix.Protocol.Client.Handler, Optix.Protocol.Packet, Optix.Protocol.Preflight, Optix.Protocol.Worker.FileTransfer,
57- Optix.Func.Commands, Optix.Task , Optix.Actions.ProcessHandler;
57+ Optix.Func.Commands, Optix.Func.Commands.Base , Optix.Actions.ProcessHandler;
5858// ---------------------------------------------------------------------------------------------------------------------
5959
6060type
@@ -121,13 +121,12 @@ implementation
121121
122122// ---------------------------------------------------------------------------------------------------------------------
123123uses
124- System.SysUtils, System.StrUtils,
124+ System.SysUtils, System.StrUtils, System.Rtti,
125125
126126 Winapi.Windows,
127127
128- Optix.Func.SessionInformation, Optix.Func.Enum.Process, Optix.Actions.Process, Optix.Func.LogNotifier,
129- Optix.Func.Enum.FileSystem, Optix.Thread, Optix.Task.ProcessDump, Optix.Func.Shell,
130- Optix.Func.Commands.ActionResponse;
128+ Optix.Func.SessionInformation, Optix.Func.Enum.Process, Optix.Func.LogNotifier, Optix.Func.Enum.FileSystem,
129+ Optix.Thread, Optix.Task.ProcessDump, Optix.Func.Shell, Optix.ClassesRegistry;
131130// ---------------------------------------------------------------------------------------------------------------------
132131
133132{ TOptixSessionHandlerThread.Initialize }
@@ -402,28 +401,42 @@ procedure TOptixSessionHandlerThread.PacketReceived(const ASerializedPacket : IS
402401 AWindowGUID := TGUID.Create(ASerializedPacket.S[' WindowGUID' ]);
403402
404403 var AOptixPacket : TOptixPacket := nil ;
405- var AHandleMemory : Boolean := False;
404+ var AHandleMemory : Boolean := False; // TODO: Remove that when migration (Generic) finished
406405 try
407406 try
407+ AOptixPacket := TOptixPacket(TClassesRegistry.CreateInstance(AClassName, [TValue.From<ISuperObject>(ASerializedPacket)]));
408+ if Assigned(AOptixPacket) then begin
409+ // Optix Action Command (& Response)
410+ if AOptixPacket is TOptixCommandAction then begin
411+ TOptixCommandActionResponse(AOptixPacket).DoAction();
412+
413+ // For Action & Response
414+ if AOptixPacket is TOptixCommandActionResponse then begin
415+ AHandleMemory := True;
416+
417+ // /
418+ AddPacket(AOptixPacket);
419+ end ;
420+ // Optix Task Command
421+ end else if AOptixPacket is TOptixCommandTask then begin
422+ AHandleMemory := True;
423+
424+ var ATask := TOptixCommandTask(AOptixPacket).CreateTask(TOptixCommand(AOptixPacket));
425+
426+ RegisterAndStartNewTask(ATask);
427+ end ;
428+ end ;
429+
430+ Continuer l' implémentation "générique", y compris à l' intérieur des tasks, afin de rendre l' ensemble le plus
431+ générique possible, y compris coté serveur + l' implémenter sur le client GUI.
432+
408433 // ---------------------------------------------------------------------------------------------------------------
409434 if AClassName = TOptixCommandTerminate.ClassName then
410435 Terminate
411436 // ---------------------------------------------------------------------------------------------------------------
412437 else if AClassName = TOptixCommandRefreshProcess.ClassName then
413438 AddPacket(TProcessList.Create(AWindowGUID))
414439 // ---------------------------------------------------------------------------------------------------------------
415- else if AClassName = TOptixCommandKillProcess.ClassName then begin
416- AHandleMemory := True;
417- // /
418-
419- AOptixPacket := TOptixCommandKillProcess.Create(ASerializedPacket);
420-
421- TProcessActions.TerminateProcess(TOptixCommandKillProcess(AOptixPacket).ProcessId);
422-
423- // /
424- AddPacket(AOptixPacket); // Callback
425- end
426- // ---------------------------------------------------------------------------------------------------------------
427440 else if AClassName = TOptixCommandRefreshDrives.ClassName then
428441 AddPacket(TDriveList.Create(AWindowGUID))
429442 // ---------------------------------------------------------------------------------------------------------------
@@ -439,15 +452,6 @@ procedure TOptixSessionHandlerThread.PacketReceived(const ASerializedPacket : IS
439452 else if AClassName = TOptixCommandUploadFile.ClassName then
440453 RegisterNewFileTransfer(TOptixCommandUploadFile.Create(ASerializedPacket))
441454 // ---------------------------------------------------------------------------------------------------------------
442- else if AClassName = TOptixCommandProcessDump.ClassName then begin
443- AHandleMemory := True;
444- // /
445-
446- AOptixPacket := TOptixCommandProcessDump.Create(ASerializedPacket);
447-
448- RegisterAndStartNewTask(TOptixProcessDumpTask.Create(TOptixCommandProcessDump(AOptixPacket)));
449- end
450- // ---------------------------------------------------------------------------------------------------------------
451455 else if AClassName = TOptixStartShellInstance.ClassName then begin
452456 AOptixPacket := TOptixStartShellInstance.Create(ASerializedPacket);
453457
@@ -472,17 +476,7 @@ procedure TOptixSessionHandlerThread.PacketReceived(const ASerializedPacket : IS
472476 StdinToShellInstance(TOptixStdinShellInstance(AOptixPacket));
473477 end
474478 // ---------------------------------------------------------------------------------------------------------------
475- else if AClassName = TOptixRequestUploadedFileInformation.ClassName then begin
476- Améliorer le protocole, rendre un certain nombre de choses plus génériques (ex. : RTTI / Registry / Class Factories)
477- etc...
478-
479- var AResponse := TOptixRequestUploadedFileInformation.Create(ASerializedPacket);
480-
481- AResponse.DoAction();
482-
483- // /
484- AddPacket(AResponse);
485- end ;
479+
486480 // ---------------------------------------------------------------------------------------------------------------
487481
488482 // ---------------------------------------------------------------------------------------------------------------
0 commit comments