Selaa lähdekoodia

[samples] updated

Exilon 5 vuotta sitten
vanhempi
commit
5bef118475

+ 53 - 0
samples/delphi/QuickPooling/HttpPool.dpr

@@ -0,0 +1,53 @@
+program HttpPool;
+
+{$APPTYPE CONSOLE}
+
+{$R *.res}
+
+uses
+  Classes,
+  System.SysUtils,
+  System.Net.HttpClient,
+  Quick.Commons,
+  Quick.Console,
+  Quick.Threads,
+  Quick.Pooling;
+
+var
+  pool : IObjectPool<THTTPClient>;
+  tasks : TBackgroundTasks;
+  i : Integer;
+
+begin
+  try
+    ReportMemoryLeaksOnShutdown := True;
+    pool := TObjectPool<THTTPClient>.Create(5,5000,procedure(var aInstance : THTTPClient)
+        begin
+          aInstance := THTTPClient.Create;
+        end);
+    tasks := TBackgroundTasks.Create(20);
+    for i := 0 to 100 do
+    begin
+      tasks.AddTask(procedure(task : ITask)
+        var
+          httpcli : THTTPClient;
+          statuscode : Integer;
+          poolitem : IPoolItem<THTTPClient>;
+        begin
+          poolitem := pool.Get;
+          cout('Got connection pool: %d',[poolitem.ItemIndex],etInfo);
+          httpcli := poolitem.Item;
+          statuscode := httpcli.Get('http://www.google.com').StatusCode;
+          if statuscode = 200 then cout('Download ok',etSuccess);
+          //Sleep(Random(2000));
+          cout(statuscode.ToString,etInfo);
+        end).Run;
+    end;
+    tasks.Start;
+    ConsoleWaitForEnterKey;
+    tasks.Free;
+  except
+    on E: Exception do
+      Writeln(E.ClassName, ': ', E.Message);
+  end;
+end.

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 145 - 0
samples/delphi/QuickPooling/HttpPool.dproj


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä