mirror of
https://gitlab.com/freepascal.org/fpc/pas2js.git
synced 2025-10-02 17:49:23 +02:00
* Add typed command handler
This commit is contained in:
parent
71d5bedcf0
commit
4e58143aa7
@ -79,6 +79,7 @@ Type
|
|||||||
TCommandDispatcherClass = class of TCommandDispatcher;
|
TCommandDispatcherClass = class of TCommandDispatcher;
|
||||||
|
|
||||||
TCommandHandler = Reference to procedure(aCommand : TCustomWorkerCommand);
|
TCommandHandler = Reference to procedure(aCommand : TCustomWorkerCommand);
|
||||||
|
generic TTypedCommandHandler<T : TCustomWorkerCommand> = Reference to procedure(aCommand : T);
|
||||||
TCommandHandlerArray = array of TCommandHandler;
|
TCommandHandlerArray = array of TCommandHandler;
|
||||||
|
|
||||||
{ TCommandDispatcher }
|
{ TCommandDispatcher }
|
||||||
@ -124,6 +125,8 @@ Type
|
|||||||
Procedure RegisterCommandHandler(const aCommand : string; aHandler : TCommandHandler);
|
Procedure RegisterCommandHandler(const aCommand : string; aHandler : TCommandHandler);
|
||||||
// Remove the given command handler for command aCommand
|
// Remove the given command handler for command aCommand
|
||||||
Procedure UnRegisterCommandHandler(const aCommand : string; aHandler : TCommandHandler);
|
Procedure UnRegisterCommandHandler(const aCommand : string; aHandler : TCommandHandler);
|
||||||
|
// Register a command handler for command aCommand
|
||||||
|
Generic Procedure AddCommandHandler<T : TCustomWorkerCommand>(const aCommand : string; aHandler : specialize TTypedCommandHandler<T>);
|
||||||
// Register a worker for broadcast
|
// Register a worker for broadcast
|
||||||
Procedure RegisterWorker(aWorker : TJSWorker; const aName : string);
|
Procedure RegisterWorker(aWorker : TJSWorker; const aName : string);
|
||||||
// Remove a worker from broadcast list
|
// Remove a worker from broadcast list
|
||||||
@ -386,6 +389,14 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
generic procedure TCommandDispatcher.AddCommandHandler<T>(const aCommand: string; aHandler: specialize TTypedCommandHandler<T>);
|
||||||
|
begin
|
||||||
|
RegisterCommandHandler(aCommand,procedure (aCmd : TCustomWorkerCommand)
|
||||||
|
begin
|
||||||
|
aHandler(T(aCmd));
|
||||||
|
end);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCommandDispatcher.RegisterWorker(aWorker: TJSWorker; const aName: string);
|
procedure TCommandDispatcher.RegisterWorker(aWorker: TJSWorker; const aName: string);
|
||||||
var
|
var
|
||||||
lReg : TJSWorkerReg;
|
lReg : TJSWorkerReg;
|
||||||
|
Loading…
Reference in New Issue
Block a user