| 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.
 |