mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-08 19:12:44 +02:00
84 lines
1.7 KiB
ObjectPascal
84 lines
1.7 KiB
ObjectPascal
unit DebugScriptServer;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes,
|
|
SysUtils,
|
|
debugthread,
|
|
DebugInOutputProcessor;
|
|
|
|
type
|
|
|
|
{ TFpDebugScriptServer }
|
|
|
|
TFpDebugScriptServer = class(TThread, IFpDebugListener)
|
|
private
|
|
FDebugThread: TFpDebugThread;
|
|
FConnectionIdentifier: integer;
|
|
FFileContents: TStringList;
|
|
FInOutputProcessor: TJSonInOutputProcessor;
|
|
protected
|
|
procedure Execute; override;
|
|
public
|
|
constructor create(ADebugThread: TFpDebugThread; AFileName: string);
|
|
function GetOrigin: string;
|
|
procedure SendEvent(AnEvent: TFpDebugEvent);
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{ TFpDebugScriptServer }
|
|
|
|
procedure TFpDebugScriptServer.Execute;
|
|
var
|
|
ACommand: TFpDebugThreadCommand;
|
|
i: Integer;
|
|
begin
|
|
FInOutputProcessor := TJSonInOutputProcessor.create(FConnectionIdentifier, @FDebugThread.SendLogMessage);
|
|
try
|
|
for i := 0 to FFileContents.Count-1 do
|
|
begin
|
|
ACommand := FInOutputProcessor.TextToCommand(FFileContents.Strings[i]);
|
|
if assigned(ACommand) then
|
|
FDebugThread.QueueCommand(ACommand);
|
|
if Terminated then
|
|
Break;
|
|
end;
|
|
finally
|
|
FInOutputProcessor.Free;
|
|
end;
|
|
Terminate;
|
|
end;
|
|
|
|
constructor TFpDebugScriptServer.create(ADebugThread: TFpDebugThread; AFileName: string);
|
|
begin
|
|
inherited Create(false);
|
|
FDebugThread:=ADebugThread;
|
|
FConnectionIdentifier := FDebugThread.AddListener(self);
|
|
FFileContents := TStringList.Create;
|
|
FFileContents.LoadFromFile(AFileName);
|
|
end;
|
|
|
|
function TFpDebugScriptServer.GetOrigin: string;
|
|
begin
|
|
result := 'File input';
|
|
end;
|
|
|
|
procedure TFpDebugScriptServer.SendEvent(AnEvent: TFpDebugEvent);
|
|
begin
|
|
// Ignore
|
|
end;
|
|
|
|
destructor TFpDebugScriptServer.Destroy;
|
|
begin
|
|
FFileContents.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
end.
|
|
|