123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- program simpleipcserver;
- {$mode objfpc}{$H+}
- uses
- {$IFDEF UNIX}
- BaseUnix,
- {$ENDIF}
- {$IFDEF windows}
- Windows,
- {$ENDIF}
- Classes, SysUtils, CustApp, simpleipc, Crt;
- type
- { TSimpleIPCServerApp }
- TSimpleIPCServerApp = class(TCustomApplication)
- protected
- procedure DoRun; override;
- public
- constructor Create(TheOwner: TComponent); override;
- end;
- { TSimpleIPCServerApp }
- procedure TSimpleIPCServerApp.DoRun;
- var
- IPCServer: TSimpleIPCServer;
- Key: Char;
- NullObj: TObject;
- begin
- IPCServer := TSimpleIPCServer.Create(nil);
- IPCServer.ServerID:='ipc_test_crash';
- IPCServer.Global:=True;
- IPCServer.StartServer;
- NullObj := nil;
- WriteLn('Server started');
- WriteLn(' Press e to finish with an exception');
- WriteLn(' Press t to terminate through OS api - ', {$IFDEF UNIX}'Kill'{$ELSE}'TerminateProcess'{$ENDIF});
- WriteLn(' Press any other key to finish normally');
- Key := ReadKey;
- case Key of
- 'e':
- begin
- NullObj.AfterConstruction;
- end;
- 't':
- begin
- {$ifdef unix}
- FpKill(FpGetpid, 9);
- {$endif}
- {$ifdef windows}
- TerminateProcess(GetCurrentProcess, 0);
- {$endif}
- end;
- end;
- IPCServer.Active:=False;
- WriteLn('Server stopped');
- IPCServer.Destroy;
- Terminate;
- end;
- constructor TSimpleIPCServerApp.Create(TheOwner: TComponent);
- begin
- inherited Create(TheOwner);
- StopOnException:=True;
- end;
- var
- Application: TSimpleIPCServerApp;
- begin
- Application:=TSimpleIPCServerApp.Create(nil);
- Application.Title:='IPC Server';
- Application.Run;
- Application.Free;
- end.
|