AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy10 threaded, queued
Thema durchsuchen
Ansicht
Themen-Optionen

Indy10 threaded, queued

Ein Thema von hzzm · begonnen am 30. Mai 2017 · letzter Beitrag vom 1. Jun 2017
Antwort Antwort
hzzm

Registriert seit: 8. Apr 2016
103 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Indy10 threaded, queued

  Alt 30. Mai 2017, 12:11
Moin,

ich versuche gerade, einen queue in meine INdy10-Verbindung einzubauen.
Dazu lese ich diesen SO Beitrag und sehe, wie Remy das queuen der Befehle mit einer TIdThreadSafeStringList loest:
Code:
procedure TMaster.IdTCPServer1Execute(AContext: TIdContext);
var
  Queue: TIdThreadSafeStringList;
  List: TStringList;
  Tmp: TStringList;
  I: Integer;
begin
  ...
  Queue := TIdThreadSafeStringList(AContext.Data);
  List := Queue.Lock;
  try
    if List.Count > 0 then
    begin
      Tmp := TStringList.Create;
      try
        Tmp.Assign(List);
        List.Clear;
      except
        Tmp.Free;
        raise;
      end;
    end;
  finally
    Queue.Unlock;
  end;
  if Tmp <> nil then
  try
    AContext.Connection.IOHandler.Write(Tmp, False);
  finally
    Tmp.Free;
  end;
  ...
end;
Mein Problem ist: Wie sieht das Gegenstueck zu diesem Queue auf Client-Seite aus?

IdTCPClient1 hat ja keinen 'AContext' (natuerlich nicht), in dem AContext.Data diese Liste sein koennte...
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Indy10 threaded, queued

  Alt 30. Mai 2017, 12:39
So in der Art?

Delphi-Quellcode:
SL: TStrings;

...

SL := TStringList.Create;

...

IdClient.IOHandler.ReadStrings(SL);

...
Da man aber immer das Encoding angeben sollte, ist es besser, auf Server und Client das Text-Encoding fest anzugeben, im Client zum Beispiel so:

ReadStrings(SL, -1, IndyTextEncoding_UTF8);
Michael Justin

Geändert von mjustin (30. Mai 2017 um 12:42 Uhr)
  Mit Zitat antworten Zitat
hzzm

Registriert seit: 8. Apr 2016
103 Beiträge
 
Delphi 10 Seattle Professional
 
#3

AW: Indy10 threaded, queued

  Alt 31. Mai 2017, 10:11
Ah, ja Danke!

Nochmal eine Verstaendnisfrage:

AContext.Data sind alle Daten insgesamt, die noch nicht gelesen wurden?
(unabhaengig davon, ob man das nachher in ein beliebiges TObject castet...)

Geändert von hzzm (31. Mai 2017 um 16:35 Uhr)
  Mit Zitat antworten Zitat
hzzm

Registriert seit: 8. Apr 2016
103 Beiträge
 
Delphi 10 Seattle Professional
 
#4

AW: Indy10 threaded, queued

  Alt 1. Jun 2017, 12:09
Was mir gerade noch aufstoesst:

TIdThreadSafeStringList kann nicht per Index auf die Strings zugreifen. Was soll das denn?
Ich muss doch irgendwie nur den ersten Befehl/String lesen koennen, um daraus eine Art lockbaren FIFO-Puffer zu bauen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz