TsgcTURNServer › Eventos › OnTURNBeforeRelayIndication
Gerado antes de o servidor retransmitir um payload Send-Indication a um peer; defina Accept como False para descartar o pacote.
property OnTURNBeforeRelayIndication: TsgcTURNBeforeRelayIndicationEvent;
// TsgcTURNBeforeRelayIndicationEvent = procedure(Sender: TObject; const aSocket: TsgcSocketConnection; const aPeerIP: string; aPeerPort: Word; const aBytes: TBytes; var Accept: Boolean) of object
—
Disparado no hot-path do relay, uma vez por Send-Indication (RFC 5766 seção 10): o cliente enviou uma indicação SEND contendo dados de aplicação que devem ser encaminhados para um peer para o qual já existe uma permissão. aPeerIP/aPeerPort identificam o peer de destino (extraído de XOR-PEER-ADDRESS) e aBytes contém o payload que está prestes a ser retransmitido no relay socket da Allocation. Utilize o evento para inspecionar ou capturar o tráfego retransmitido (por exemplo, para examinar pacotes de áudio/vídeo enviados através do servidor TURN) ou para implementar limitação de taxa por peer. Defina Accept := False para descartar o datagrama silenciosamente; nenhum erro é enviado ao cliente remetente. Este evento é disparado no caminho do relay e é executado de forma síncrona, a menos que NotifyEvents o redirecione, considere neNoSync sob carga pesada para evitar back-pressure no listener. aBytes é uma view somente leitura; não modifique seu conteúdo.
procedure TForm1.OnTURNBeforeRelayIndication(Sender: TObject;
const aSocket: TsgcSocketConnection; const aPeerIP: string; aPeerPort: Word;
const aBytes: TBytes; var Accept: Boolean);
begin
vBytesRelayed := vBytesRelayed + Length(aBytes);
Accept := True;
end;