TsgcWebSocketHTTPServer › Proprietà › QueueOptions

QueueOptions Property

Serializza i messaggi in uscita tramite una coda interna per connessione per prevenire la contesa tra thread.

Sintassi

property QueueOptions: TsgcWSQueueServer_Options read FQueueOptions write SetQueueOptions;

Valore predefinito

Text.Level=qmNone, Binary.Level=qmNone, Ping.Level=qmNone

Note

Quando abilitato, i messaggi vengono collocati in una coda interna e inviati nel contesto del thread della connessione anziché nel thread del chiamante. Questo elimina il blocco necessario quando più thread scrivono sulla stessa connessione contemporaneamente. Ogni tipo di messaggio (Text, Binary, Ping) è un sotto-oggetto con una propria proprietà Level, che assegna una priorità indipendente: qmNone salta la coda (predefinito), qmLevel0 viene elaborato per primo, poi qmLevel1 e infine qmLevel2. Ad esempio, impostare Text.Level e Binary.Level su qmLevel2 e Ping.Level su qmLevel1 garantisce che i ping vengano consegnati prima del traffico ordinario. QueueOptions è supportato solo dall'IOHandler predefinito. Quando IOHandlerOptions.IOHandlerType è iohIOCP o iohEPOLL, la coda viene disattivata all'avvio del server: i tre livelli vengono reimpostati su qmNone, l'evento OnError lo segnala e i messaggi vengono scritti inline sul thread del chiamante. Un livello assegnato quando il server è già in ascolto viene reimpostato allo stesso modo a ogni nuova connessione.

Esempio


oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.QueueOptions.Text.Level := qmLevel2;
oServer.QueueOptions.Binary.Level := qmLevel2;
oServer.QueueOptions.Ping.Level := qmLevel1;
oServer.Active := true;

Torna alle Proprietà