|
@@ -72,7 +72,6 @@ Type
|
|
TPCDaemon = Class(TCustomDaemon)
|
|
TPCDaemon = Class(TCustomDaemon)
|
|
Private
|
|
Private
|
|
FThread : TPCDaemonThread;
|
|
FThread : TPCDaemonThread;
|
|
- Procedure ThreadStopped (Sender : TObject);
|
|
|
|
public
|
|
public
|
|
Function Start : Boolean; override;
|
|
Function Start : Boolean; override;
|
|
Function Stop : Boolean; override;
|
|
Function Stop : Boolean; override;
|
|
@@ -325,30 +324,26 @@ end;
|
|
|
|
|
|
{ TPCDaemon }
|
|
{ TPCDaemon }
|
|
|
|
|
|
-procedure TPCDaemon.ThreadStopped(Sender: TObject);
|
|
|
|
-begin
|
|
|
|
- FreeAndNil(FThread);
|
|
|
|
-end;
|
|
|
|
-
|
|
|
|
function TPCDaemon.Start: Boolean;
|
|
function TPCDaemon.Start: Boolean;
|
|
begin
|
|
begin
|
|
Result:=inherited Start;
|
|
Result:=inherited Start;
|
|
TLog.NewLog(ltinfo,ClassName,'Daemon Start '+BoolToStr(Result));
|
|
TLog.NewLog(ltinfo,ClassName,'Daemon Start '+BoolToStr(Result));
|
|
FThread:=TPCDaemonThread.Create;
|
|
FThread:=TPCDaemonThread.Create;
|
|
- FThread.OnTerminate:=@ThreadStopped;
|
|
|
|
- FThread.FreeOnTerminate:=False;
|
|
|
|
|
|
+ FThread.FreeOnTerminate:=True;
|
|
if (Application.HasOption('b','block')) then begin
|
|
if (Application.HasOption('b','block')) then begin
|
|
FThread.MaxBlockToRead:=StrToInt64Def(Application.GetOptionValue('b','block'),$FFFFFFFF);
|
|
FThread.MaxBlockToRead:=StrToInt64Def(Application.GetOptionValue('b','block'),$FFFFFFFF);
|
|
TLog.NewLog(ltinfo,ClassName,'Max block to read: '+IntToStr(FThread.MaxBlockToRead));
|
|
TLog.NewLog(ltinfo,ClassName,'Max block to read: '+IntToStr(FThread.MaxBlockToRead));
|
|
end;
|
|
end;
|
|
- FThread.Resume;
|
|
|
|
|
|
+ FThread.Start;
|
|
end;
|
|
end;
|
|
|
|
|
|
function TPCDaemon.Stop: Boolean;
|
|
function TPCDaemon.Stop: Boolean;
|
|
begin
|
|
begin
|
|
Result:=inherited Stop;
|
|
Result:=inherited Stop;
|
|
- TLog.NewLog(ltinfo,ClassName,'Daemon Stop: '+BoolToStr(Result));
|
|
|
|
|
|
+ TLog.NewLog(ltinfo,ClassName,'Daemon Stop Start');
|
|
FThread.Terminate;
|
|
FThread.Terminate;
|
|
|
|
+ FThread.WaitFor;
|
|
|
|
+ TLog.NewLog(ltinfo,ClassName,'Daemon Stop Finished');
|
|
end;
|
|
end;
|
|
|
|
|
|
function TPCDaemon.Pause: Boolean;
|
|
function TPCDaemon.Pause: Boolean;
|
|
@@ -374,8 +369,10 @@ end;
|
|
function TPCDaemon.ShutDown: Boolean;
|
|
function TPCDaemon.ShutDown: Boolean;
|
|
begin
|
|
begin
|
|
Result:=inherited ShutDown;
|
|
Result:=inherited ShutDown;
|
|
- TLog.NewLog(ltinfo,ClassName,'Daemon Shutdown: '+BoolToStr(Result));
|
|
|
|
|
|
+ TLog.NewLog(ltinfo,ClassName,'Daemon Shutdown Start');
|
|
FThread.Terminate;
|
|
FThread.Terminate;
|
|
|
|
+ FThread.WaitFor;
|
|
|
|
+ TLog.NewLog(ltinfo,ClassName,'Daemon Shutdown Finished');
|
|
end;
|
|
end;
|
|
|
|
|
|
function TPCDaemon.Install: Boolean;
|
|
function TPCDaemon.Install: Boolean;
|
|
@@ -408,11 +405,11 @@ end;
|
|
|
|
|
|
procedure TPCDaemonMapper.DoOnDestroy;
|
|
procedure TPCDaemonMapper.DoOnDestroy;
|
|
begin
|
|
begin
|
|
|
|
+ inherited DoOnDestroy;
|
|
If Assigned(FLog) then begin
|
|
If Assigned(FLog) then begin
|
|
FLog.OnInThreadNewLog:=Nil;
|
|
FLog.OnInThreadNewLog:=Nil;
|
|
FreeAndNil(FLog);
|
|
FreeAndNil(FLog);
|
|
end;
|
|
end;
|
|
- inherited DoOnDestroy;
|
|
|
|
end;
|
|
end;
|
|
|
|
|
|
end.
|
|
end.
|