Alle TURN-bewerkingen draaien om toewijzingen en alle TURN-berichten zijn gekoppeld aan een toewijzing. Een toewijzing bestaat uit:
Wanneer een TURN-client een Allocate-verzoek verzendt, wordt dit TURN-bericht verwerkt door de server en probeert een nieuw Relayed Transport Address aan te maken. Standaard, als er een beschikbare UDP-poort is, wordt een nieuw Relayed Address aangemaakt, maar u kunt de gebeurtenis OnTURNBeforeAllocate gebruiken om een nieuw Allocation-verzoek te weigeren.
procedure OnTURNBeforeAllocate(Sender: TObject; const aSocket: TsgcSocketConnection;
const aIP: string; aPort: Word; var Reject: Boolean);
begin
if not (your own rules) then
Reject := false;
end;
Als het proces doorgaat, maakt de server een nieuwe toewijzing aan en wordt de gebeurtenis OnTURNCreateAllocation aangeroepen. Deze gebeurtenis biedt informatie over de toewijzing via de klasse TsgcTURNAllocationItem.
procedure OnTURNCreateAllocation(Sender: TObject; const aSocket: TsgcSocketConnection;
const Allocation: TsgcTURNAllocationItem);
begin
DoLog('New Allocation: ' + Allocation.RelayIP + ':' + IntToStr(Allocation.RelayPort));
end;
Wanneer de Toewijzing verloopt of wordt verwijderd na ontvangst van een Refresh-verzoek van de client met een levensduur van nul, wordt de OnTURNDeleteAllocation-gebeurtenis geactiveerd.
procedure OnTURNDeleteAllocation(Sender: TObject; const aSocket: TsgcSocketConnection;
const Allocation: TsgcTURNAllocationItem);
begin
DoLog('Allocation Deleted: ' + Allocation.RelayIP + ':' + IntToStr(Allocation.RelayPort));
end;