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