TsgcWebSocketClient › Özellikler › QueueOptions

QueueOptions Özellik

Giden Text, Binary ve Ping mesajlarını, bağlantı iş parçacığında serileştirilecek şekilde kuyruğa alır.

Sözdizimi

property QueueOptions: TsgcWSQueueClient_Options read FQueueOptions write SetQueueOptions;

Varsayılan Değer

Text.Level=qmNone, Binary.Level=qmNone, Ping.Level=qmNone, MaxQueueSize=0, OverflowPolicy=qopDropOldest, DrainedMode=qdmTransition

Remarks

Varsayılan olarak mesajlar doğrudan çağıran iş parçacığına yazılır. Bir kuyruk düzeyi (qmLevel0, qmLevel1 veya qmLevel2) atamak onları kuyruğa alır ve bağlantı iş parçacığından sırayla gönderir, böylece birkaç iş parçacığı aynı anda WriteData veya Ping çağırdığında kilitlerden kaçınır. qmLevel0 mesajları qmLevel1 öncesinde ve qmLevel1 qmLevel2 öncesinde işlenir, böylece daha yüksek öncelikli kategoriler (örneğin ping) yüklerden önce teslim edilebilir.

MaxQueueSize, bir kuyruğun tutabileceği ileti sayısını sınırlar: sıfır (varsayılan) sınırsız anlamına gelir ve önceki davranışı korur. Sınıra ulaşıldığında yeni iletilere ne olacağına OverflowPolicy karar verir: qopDropOldest (varsayılan) yer açmak için kuyruktaki en eski iletiyi atar, qopDropNewest yeni iletiyi atar, qopDisconnect iletiyi atar ve bağlantıyı kapatır. Sınıra her ulaşıldığında önce OnSendBufferFull olayı tetiklenir; böylece uygulama geri basıncı izleyebilir veya iletinin atılmasını geçersiz kılabilir.

DrainedMode, OnQueueDrained olayının ne zaman tetikleneceğini seçer. qdmTransition (varsayılan) ile olay, bir bağlantının giden kuyruğu ileti tutar durumdan boş duruma her geçtiğinde bir kez tetiklenir. qdmEveryPass ile olay, kuyruk zaten boş olsa bile ve Text.Level, Binary.Level ve Ping.Level üçü de qmNone olsa bile, kuyruklar gönderildikten hemen sonra bağlantı döngüsünün her geçişinde tetiklenir; bu nedenle sahte bir kuyruk düzeyine gerek yoktur. Bağlantının kendi iş parçacığında çalışan, bağlantı başına bir kanca olarak kullanışlıdır, örneğin bekleyen uygulama verilerini WriteData ile göndermek için. Olay NotifyEvents ayarını izlemez, bu nedenle işleyici hızlı olmalı ve kullanıcı arayüzüne dokunmamalıdır. Her bağlantı, bağlanırken kuyruk seçeneklerini kopyalar, bu nedenle DrainedMode değerini bileşeni etkinleştirmeden önce ayarlayın, zaten açık olan bağlantılar önceki modu korur.

Örnek


oClient := TsgcWebSocketClient.Create(nil);
oClient.URL := 'wss://www.esegece.com:2053';
oClient.QueueOptions.Ping.Level := qmLevel1;
oClient.QueueOptions.Text.Level := qmLevel2;
oClient.QueueOptions.Binary.Level := qmLevel2;
oClient.Active := true;

Özelliklere Dön