Einzelnen Beitrag anzeigen

Benutzerbild von t2000
t2000

Registriert seit: 15. Dez 2005
Ort: NRW
212 Beiträge
 
Delphi 11 Alexandria
 
#1

Grundsätzliches internes zu Linux

  Alt 30. Nov 2020, 08:34
Hallo Forum,

ich möchte die ersten Dienste für Linux entwickeln. Dazu habe ich ein paar ganz grundsätzliche Fragen um den Übergang von Windows zu schaffen.
Es geht um Message Verarbeitung, Threads usw. Weiteres wird bestimmt folgen.

Ich habe meine Server/Services als Komandozeilen-Programme ausgelegt. So kann ich sie flexibel einsetzen und dachte mir auch, dass es leichter sein wird diese auf andere Platformen zu portieren. Unter Windows habe ich einen Windows-Service, der meinen Kernel-Service kontrolliert und ggf. startet. So, das vorweg.

Problem 1: Messageloop

Ich habe im Prinzip die Messageloop aus der VCL nachgebildet. Darüber kann ich threadübergreifend Nachrichten senden, sychrone und asynchrone Dinge tun.

Wie mache ich das unter Linux?

Hier der Code. "ProcessMessage" wird natürlich in einer Schleife aufgerufen. Die Markierungen mit {!!!} sind wohl erstmal die wichtigen Punkte.

Ich denke, weitere Fragen werden hier in diesen Thema folgen.

Vielen Dank.
VG Thomas

Delphi-Quellcode:
function TServerApp.ProcessMessage(var Msg: TMsg): Boolean;
var
  Handled: Boolean;
begin
  Result := False;
{!!!}  if PeekMessage(Msg, NativeUInt(-1), 0, 0, PM_REMOVE) then begin
    Result := True;

    if Msg.Message <> WM_QUIT then begin
      Handled := False;
      case Msg.Message of
        sms_Processing : ;
        sms_Quit : FCloseTimer.Enabled := true;
        sms_Synchronize : SyncExecute( Msg.wParam);
        sms_Workerthread : CreateWorkItem;
      end; // case

      //if Assigned(FOnMessage) then
      // FOnMessage(Msg, Handled);
      if not Handled then begin
{!!!}        TranslateMessage(Msg);
{!!!}        DispatchMessage(Msg);
      end;
    end else begin
      FTerminate := True;
    end;
  end;
end;
Thomas
(Wir suchen eine(n) Entwickler(in) mit Ambitionen später ggf. die Softwarefirma zu leiten)
Aktuell nicht mehr. Aber ab vielleicht 2024/2025 wird das wieder sehr interessant!
  Mit Zitat antworten Zitat