12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- {$mode objfpc}
- {$h+}
- program ipcserver;
- {$APPTYPE CONSOLE}
- uses
- {$ifdef unix}cthreads,{$endif}
- SysUtils,
- Classes,
- simpleipc;
- Type
- TApp = Class(TObject)
- Srv : TSimpleIPCServer;
- DoStop : Boolean;
- Procedure MessageQueued(Sender : TObject);
- procedure Run;
- Procedure PrintMessage;
- end;
- Procedure TApp.PrintMessage;
- Var
- S : String;
-
- begin
- S:=Srv.StringMessage;
- Writeln('Received message : ',S);
- DoStop:=DoStop or (S='stop');
- end;
- Procedure TApp.MessageQueued(Sender : TObject);
- begin
- Srv.ReadMessage;
- PrintMessage;
- end;
- Procedure TApp.Run;
-
- Var
- S : String;
- Threaded : Boolean;
- begin
- Srv:=TSimpleIPCServer.Create(Nil);
- Try
- S:= ParamStr(1);
- Threaded:=(S='-t') or (S='--threaded');
- Srv.ServerID:='ipcserver';
- Srv.Global:=True;
- if Threaded then
- Srv.OnMessageQueued:=@MessageQueued;
- Srv.StartServer(Threaded);
- Writeln('Server started. Listening for messages. Send "stop" message to stop server.');
- Repeat
- If Threaded then
- begin
- Sleep(10);
- CheckSynchronize;
- end
- else if Srv.PeekMessage(10,True) then
- PrintMessage
- else
- Sleep(10);
- Until DoStop;
- Finally
- Srv.Free;
- end;
- end;
- begin
- With TApp.Create do
- try
- Run
- finally
- Free;
- end;
- end.
|