112 lines
1.9 KiB
ObjectPascal
112 lines
1.9 KiB
ObjectPascal
unit cgi_daemon;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, DaemonApp, ConnectionsDmUnit;
|
|
|
|
type
|
|
TLMSReportCGI=class;
|
|
{ TDaemonThread }
|
|
|
|
TDaemonThread=class(TThread)
|
|
fOwner: TLMSReportCGI;
|
|
fData: TConnectionsDM;
|
|
procedure Execute;override;
|
|
function sleepMin(n: integer): boolean;
|
|
constructor Create(AOwner: TLMSReportCGI);
|
|
end;
|
|
|
|
{ TLMSReportCGI }
|
|
|
|
TLMSReportCGI = class(TDaemon)
|
|
procedure DataModuleCreate(Sender: TObject);
|
|
procedure DataModuleDestroy(Sender: TObject);
|
|
procedure DataModuleStart(Sender: TCustomDaemon; var OK: Boolean);
|
|
procedure DataModuleStop(Sender: TCustomDaemon; var OK: Boolean);
|
|
private
|
|
workThread: TDaemonThread;
|
|
public
|
|
|
|
end;
|
|
|
|
var
|
|
LMSReportCGI: TLMSReportCGI;
|
|
|
|
implementation
|
|
|
|
procedure RegisterDaemon;
|
|
begin
|
|
RegisterDaemonClass(TLMSReportCGI)
|
|
end;
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TLMSReportCGI }
|
|
|
|
procedure TLMSReportCGI.DataModuleCreate(Sender: TObject);
|
|
begin
|
|
workThread := TDaemonThread.create(self);
|
|
end;
|
|
|
|
procedure TLMSReportCGI.DataModuleDestroy(Sender: TObject);
|
|
begin
|
|
workthread.free;
|
|
end;
|
|
|
|
procedure TLMSReportCGI.DataModuleStart(Sender: TCustomDaemon; var OK: Boolean);
|
|
begin
|
|
|
|
workThread.Start;
|
|
OK := true;
|
|
end;
|
|
|
|
procedure TLMSReportCGI.DataModuleStop(Sender: TCustomDaemon; var OK: Boolean);
|
|
begin
|
|
workThread.Terminate;
|
|
end;
|
|
|
|
{ TDaemonThread }
|
|
|
|
procedure TDaemonThread.Execute;
|
|
begin
|
|
fData := TConnectionsDM.Create(nil);
|
|
try
|
|
fData.Start;
|
|
while not terminated do
|
|
begin
|
|
if sleepMin(2) then
|
|
fData.Idle(self);
|
|
end;
|
|
fData.Stop;
|
|
finally
|
|
fData.free;
|
|
end;
|
|
end;
|
|
|
|
function TDaemonThread.sleepMin(n: integer): boolean;
|
|
var
|
|
i: integer;
|
|
begin
|
|
for i := 1 to n*60 do
|
|
begin
|
|
if terminated then break
|
|
else sleep(1000);
|
|
end;
|
|
result := not terminated;
|
|
end;
|
|
|
|
constructor TDaemonThread.Create(AOwner: TLMSReportCGI);
|
|
begin
|
|
inherited Create(true);
|
|
fOwner:=AOwner;
|
|
end;
|
|
|
|
|
|
initialization
|
|
RegisterDaemon;
|
|
end.
|
|
|